home *** CD-ROM | disk | FTP | other *** search
/ HamCall (October 1991) / HamCall (Whitehall Publishing)(1991).bin / prgming / ada / asr012.sup < prev    next >
Text File  |  1987-11-02  |  115KB  |  2,032 lines

  1. .RR--!----!----!----!----!----!----!----!----!----!----!-------------------!-R
  2. .po 5
  3. ..po 1
  4. .he                 ASR Newsletter, Issue 12 Supplement, Oct 87
  5. .fo                                                               Page #
  6. Ada (tm) Software Repository (ASR) Newsletter     Issue 12 Supplement, Oct 87
  7. Richard Conn, Newsletter Editor                   Published by Echelon, Inc.
  8.  
  9.                                THIS SUPPLEMENT
  10.             Theme: Ada Education, Software Engineering, and Reuse
  11.  
  12.      I. Ada Education and Training .................................  2
  13.           A. Part 1 ........  2    D. Comments on Parts 1-3 ........  8
  14.           B. Part 2 ........  4    E. Part 4 ....................... 14
  15.           C. Part 3 ........  6    F. Comments on Parts 1-4 ........ 17
  16.  
  17.     II. The Human Element in Software Engineering .................. 19
  18.  
  19.    III. The DoD and Software Reuse ................................. 21
  20.           A. Part 5 ................................................ 21
  21.           B. Comments on Part 5 .................................... 23
  22. -----------------------------------------------------------------------------
  23. I  wish to thank the following people for sharing their insights and  opinions 
  24. on the Defense Data Network:
  25.  
  26. Drew Adams                         Mike Feldman
  27. Laboratories de Marcoussis         Department of EE & CS
  28. Centre de Recherche de la          The George Washington University
  29.   Compagnie Generale
  30.   d'Electricite                    Sam Harbaugh
  31.  
  32. Ed Berard                          Bob Munck
  33. EVB Software Engineering, Inc.     The MITRE Corporation
  34.  
  35. Carsten Bormann                    Lt. Scott A. Norton, USN
  36. Communications and Operating       Naval Postgraduate School
  37.   Systems Research Group
  38. Technical University of Berlin     Pat Rogers
  39.                                    University of Houston at Clear Lake
  40. Lawrence Crowl
  41. Computer Science Department        Pete Schilling
  42. University of Rochester            ALCOA Laboratories
  43.  
  44. Dennis Doubleday                   D. Schimisky
  45. Department of Computer Science     Naval Air Development Center
  46. University of Maryland
  47.                                    Stanley Shebs
  48. Dick Dunn                          University of Utah
  49. NASA Ames Research Center
  50.                                    Craig Wylie    
  51.                                    Department of Computing
  52.                                    University of Lancaster, UK
  53.  
  54.                                         -- Richard Conn, Editor
  55.                                            ASR Newsletter 12 Supplement
  56.                            ---------------------
  57.           NOTE:  Statements  made  in  this  supplement  should  generally  be 
  58. considered to be personal opinions of the individuals and not necessarily  the 
  59. opinions of the U.S. government or any specific company or organization.
  60. .pa
  61. ==============================================================================
  62. I. A. Ada Education and Training - Part 1
  63. Date:  1 May 1987 04:12:44 PDT
  64. Subject: Ada Education and Training - Part 1
  65. From: Edward V. Berard <EBERARD@AJPO.SEI.CMU.EDU>
  66.  
  67. It has happened again. Some DoD contractor has contacted our company for  some 
  68. "Ada training," and has described a "recipe for disaster."  Let me fill you in 
  69. on the details:
  70.  
  71.      1. Apparently this contractor was awarded a contract even though there is 
  72. little  evidence to suggest that anyone working on the software has  any  real 
  73. Ada experience. (You know how this works - pick a scenario: a) the  contractor 
  74. added  the word "Ada" to the list of languages on the resumes at the  back  of 
  75. the  winning  (?) proposal; b) the contractor assured  the  naive  contracting 
  76. office that the technical staff would have "adequate Ada training" by the time 
  77. any  software  was  written; c) the contractor  used  resumes  of  "qualified" 
  78. individuals  who are too busy on other projects to be assigned to the  current 
  79. project,  so management thought that they could either hire someone  with  the 
  80. needed skills by the time the coding started, or provide some absolute minimum 
  81. of training to the people actually assigned to the project.)
  82.  
  83.      2.  Not realizing that Ada technology impacts the entire  software  life-
  84. cycle  (including business practices), management has waited until the  coding 
  85. is  about to start to train their technical staff in what, to the  management, 
  86. is "just another programming language."
  87.  
  88.      3.  Not wanting to waste any money on "software foolishness" (after  all, 
  89. the      management     believes     that     it     is      the      hardware 
  90. engineering/mathematics/science  that  is  the "real  work"),  management  has 
  91. dictated that the "Ada education" will consist almost entirely of one week  of 
  92. classroom  instruction. Being somewhat generous, management has also  provided 
  93. some  "Booch books" and some "Alsys tapes" which the technical staff can  look 
  94. at,  on their own time. (I am not knocking the quality or usefulness of  these 
  95. products, just their misuse.)
  96.  
  97.      4. Since the only computer that has an Ada compiler on it is tied up with 
  98. useful work, the one week of training they wish us to provide is a "hands-off" 
  99. course. We may provide the students with some small "paper exercises," but  we 
  100. are  being encouraged to forego any labs so that we can "cram as much  of  the 
  101. language into the heads of the participants as possible."
  102.  
  103.      5.  The management is not open to any suggestions on how to  improve  the 
  104. quality  of the Ada training. It also happens that some other  well-known  Ada 
  105. experts have attempted to enlighten the management, but have been rebuffed.
  106.  
  107. The results of this project can be foretold quite easily.:
  108.  
  109.      -   The programmers will find the Ada language to be "large, complex  and 
  110. confusing." The code they produce will be "AdaTRAN" at best.  There will be  a 
  111. great  deal of time spent trying to understand that "dumb  reference  manual." 
  112. Ada books that emphasize syntax to the exclusion of software engineering  will 
  113. become  prized possessions. Especially valuable will be books  and  references 
  114. which treat Ada as "a superset of Pascal."
  115.  
  116.      -  The programmers will find that the Ada development system is confusing 
  117. to  use.  Since it is likely that the design will be in a  constant  state  of 
  118. revision, the specification parts of the Ada program units will change  fairly 
  119. often,  necessitating frequent re-compilation and relinking. As the amount  of 
  120. code  grows, the time spent re-compiling and relinking will quickly  reach  an 
  121. intolerable  level.  Frequent references will be made to the large  amount  of 
  122. object code produced, and its inefficient running speed. But after all,  isn't 
  123. that what one would expect from such a large language?
  124.  
  125.      -   The  programmers will find many features of the Ada  language  to  be 
  126. extremely  bothersome. There will be frequent complaints about strong  typing, 
  127. private  types (if they are used at all), the time for task rendezvouses,  and 
  128. those strange generic things.
  129.  
  130.      -   More  source  code will be produced than  for  a  comparable  project 
  131. written  in FORTRAN or Pascal. The detractors of Ada will gleefully  point  to 
  132. this as an expected result.
  133.  
  134.      -   The  project  will be late, overbudget, and  the  software  will  not 
  135. perform at anywhere near the original specifications. Looking for a scapegoat, 
  136. management  and the technical staff will grab the first inanimate object  they 
  137. can find (you guessed it -- Ada), and blame it for any shortcomings or project 
  138. failures.   The contracting office, being equally naive about Ada  technology, 
  139. will accept without question that Ada is the culprit. 
  140.  
  141. There  will,  of  course, be many other problems, but let  us  now  focus  our 
  142. attention on the root causes.
  143.  
  144. The  Ada  language  was designed by first identifying a  number  of  desirable 
  145. software engineering features (e.g., data abstraction, information hiding, and 
  146. encapsulation),  and  then  incorporating these features  into  a  programming 
  147. language.  Since  a  good  number  of  these  concepts  are  foreign  to  most 
  148. programmers and managers, it comes as no surprise that the concepts are  often 
  149. abused, if they are used at all.
  150.  
  151. Many  advocates  of Ada technology have pushed the language, and  ignored  the 
  152. software  engineering.  Yes, there have been some people within the  DoD,  and 
  153. outside  of the DoD, who have stressed software engineering, but their  voices 
  154. have  been lost in the din. [Note the on-again, off-again funding for  STARS.] 
  155. Part  of  the  blame lies at the feet ofthe DoD  for  not  stressing  software 
  156. engineering strongly enough.
  157.  
  158. Within the Ada Joint Program Office (AJPO) is the Ada Software Engineering and 
  159. Education  and Training (ASEET) group. Hopefully, one of ASEET's goals  is  to 
  160. define minimal qualifications for an Ada software professional. This should be 
  161. in addition to definitions for course content in an industry targeted Ada  and 
  162. software  engineering training curriculum. Without any  guidance,  contractors 
  163. are  free  to train (or not train) their technical staffs in any  manner  they 
  164. choose.   Further,  contracting offices continue to have no idea  as  to  what 
  165. constitutes a qualified Ada professional.
  166.  
  167. Of  course,  I am not going to let the contractor's management off  the  hook. 
  168. Unfortunately,  they learned a long time ago that software quality was  little 
  169. more  than a buzzword. (Note: Much is known about software quality,  including 
  170. how  to measure it. Sadly, this technology seems to be largely ignored.)  They 
  171. seem  to get paid regardless of the "quality" of the software product.  Is  it 
  172. any  wonder  why  they  view  software  as  a  necessary  evil,  and  software 
  173. engineering  training as a useless luxury? So what if the software  fails,  so 
  174. long as the hardware holds up.
  175.  
  176. There  is  a  one-word definition for learning: change. The  hope  behind  Ada 
  177. technology  is  that  this change will be for the better.  Until  there  is  a 
  178. greater  recognition that Ada education and training is different, the  change 
  179. may not be what the proponents of the new technology have predicted. 
  180.  
  181.                 -- Ed Berard
  182.                    (301) 695-6960
  183.  
  184. ==============================================================================
  185. I. B. Ada Education and Training - Part 2
  186. Date:  1 May 1987 05:20:10 PDT
  187. Subject: Ada Education and Training - Part 2
  188. From: Edward V. Berard <EBERARD@AJPO.SEI.CMU.EDU>
  189.  
  190. Some years ago, when I began offering one of the first hands-on Ada courses, I 
  191. invited  some of the members of the Ada Joint Program Office (AJPO) to sit  in 
  192. on  the  course. Those that accepted my proposition gave me  some  interesting 
  193. feedback. It seem to the AJPO folks that my Ada courses were severely  lacking 
  194. in  software  engineering.  I  was puzzled. I  had  incorporated  sections  on 
  195. structured  programming  and coding style into my notes. What  more  did  they 
  196. want?
  197.  
  198. I  now  know  that my first attempt at an Ada course was little  more  than  a 
  199. glorified  Pascal seminar. I gave short coding examples for labs, and  treated 
  200. packages,  tasks,  and  generics  as "advanced  features."  There  was  little 
  201. discussion of abstraction, information hiding, and encapsulation. The  message 
  202. eventually  got through to me that a "syntax course" was a "no no,"  and  that 
  203. software engineering was much more than just structured programming.  However, 
  204. there was still a major problem.
  205.  
  206. As  you  know,  the  software community, as a whole,  is  initially  not  very 
  207. receptive to software engineering concepts. Managers and programmers alike are 
  208. obsessed with code. The sooner you can get down to coding the more comfortable 
  209. they  feel.  Software  engineering  is  mockingly  referred  to  as  "software 
  210. religion" by many. Management continually assures me that there may be time to 
  211. learn something other than coding "later."
  212.  
  213. Let  me  assure  you that it takes a great deal of  persuasion  ("singing  and 
  214. dancing,"  cajoling)  to get management and the technical  staff  to  consider 
  215. software  engineering  as an important part of Ada training.   Fortunately,  I 
  216. have two things going for me. First, most software professionals want to do  a 
  217. good  job.  If I can show them a way which will make their  software  products 
  218. better, and justify my reasoning, they will generally accept the idea. Second, 
  219. software types are extremely goal oriented. Given proper goals, they will work 
  220. hard to achieve them.
  221.  
  222. Unfortunately,  there  are  those Ada trainers who are not  as  persuasive  as 
  223. myself.  They  are easily bullied by their client's management  and  technical 
  224. staff  into  giving  syntax-only  courses.  Since  their  clients  are   often 
  225. blissfully ignorant of the impact of poor software engineering, especially  on 
  226. an  Ada  project,  the  clients  often  see  no  immediate  benefit  from  the 
  227. incorporation of software engineering technology into an Ada training course.
  228.  
  229. In a perfect world, software contractors would want to do everything in  their 
  230. power  to produce a quality product. Unfortunately, many DoD contractors  seem 
  231. to  be primarily driven by money and DoD regulations which must be adhered  to 
  232. to ensure the continued flow of money.  (Don't get me wrong. I am very much  a 
  233. capitalist.)  This  implies that one way to improve the current state  of  Ada 
  234. education  and training might be some gentle prodding by the DoD. Say, in  the 
  235. form  of some recommendations from the Ada Software Engineering and  Education 
  236. and Training (ASEET) group.
  237.  
  238. Two months ago, I received a message from Doug Bryan who, among other  things, 
  239. teaches  an  Ada  course at Stanford University. I think  you  will  find  his 
  240. message to be of general interest. 
  241.  
  242. ------------------- Message Follows ------------------------
  243.  
  244. I tried something new (and costly) with my Stanford class this year.   Usually 
  245. I teach
  246.  
  247.      abstraction -> misc. s/w eng -> OOD -> reuse -> the details of Ada
  248.  
  249. This  year I tried reversing it since "the powers above" wanted it to be  more 
  250. of a programming class and less of a Software Engineering class.  So, I taught
  251.  
  252.           the details of Ada -> abstraction -> OOD (OOx) -> reuse
  253.  
  254. I'm  now  grading  some of the final projects and realizing this  was  a  real 
  255. mistake.   Their code is terrible and it's my fault.  Their packages are  best 
  256. classified   as  "collections  of  stuff";   Private  types,  generic   formal 
  257. parameters,  and decent use of attributes are practically  non-existent;  most 
  258. every subprogram is a procedure, all parameters of which are mode in out;  ... 
  259. the list goes on and on.
  260.  
  261. It  was costly, but I have seen first hand empirical evidence of what the  Ada 
  262. community has been telling itself (and others) for years:
  263.  
  264.       Ada without a software engineering foundation is MIL-STD Pascal.
  265.  
  266. live and learn...
  267.  
  268. ------------------ End of Message --------------------
  269.  
  270.                 -- Ed Berard
  271.                    (301) 695-6960
  272.  
  273. .pa
  274. ==============================================================================
  275. I. C. Ada Education and Training - Part 3
  276. Date:  3 May 1987 12:23:12 PDT
  277. Subject: Ada Education and Training - Part 3
  278. From: Edward V. Berard <EBERARD@AJPO.SEI.CMU.EDU>
  279.  
  280. Recently,  an instructor at one of the military academies told me how she  had 
  281. selected  a book for an introductory Ada class. She had rejected Booch's  book 
  282. (Software  Engineering With Ada) in favor of another text. It was not so  much 
  283. the text she had selected that bothered me, as it was her reason for rejecting 
  284. Booch's book. "Booch takes too long to get to any code.", she said, "I want to 
  285. see something like 'Hello World' real quick." [For those of you who have never 
  286. programmed in C, or, more precisely, read Kernighan and Ritchie's book on  the 
  287. C  programming  language,  the "Hello World" program is the  first  C  program 
  288. covered in many introductory C courses.]
  289.  
  290. Kernighan  and Ritchie (K&R) and Booch represent two very different  views  on 
  291. teaching  programming.  K&R  stresses the age old  thinking  which  says  that 
  292. students  of software must see, write, and execute code before  anything  else 
  293. will  be meaningful. Booch, on the other hand, stresses that  students  should 
  294. know  what they are doing before they attempt to write code. The K&R  approach 
  295. has its roots in software antiquity.
  296.  
  297. Programming  code is the "cocaine" of the software world. To many  programmers 
  298. and  managers  it  is  all that matters. While  software  is  being  designed, 
  299. managers  wait nervously and the programmers/coders wait impatiently. One  the 
  300. design document is finished, the "real work" can begin. With any luck the code 
  301. which  is  produced  may  closely resemble what is  described  in  the  design 
  302. documentation.
  303.  
  304. To  an outsider this infatuation with code seems strange. One hears from  many 
  305. sources  that  coding usually takes up only 10 to 15 percent of  the  software 
  306. life-cycle. Why then do we focus so much attention on the syntax and semantics 
  307. of the programming language? Several reasons come to mind:
  308.  
  309.      1)  Many  of those who are already programmers  and  instructors  believe 
  310. strongly  that,  only if one is intimately familiar with code, can  one  fully 
  311. understand the implications of any other part of the software life-cycle.
  312.  
  313.      2) Some in the Ada community feel that the software engineering  embodied 
  314. in  the Ada language will either be obvious to the neophytes or  that  through 
  315. constant  use of the Ada language, good software engineering concepts will  be 
  316. absorbed "via osmosis."
  317.  
  318.      3)  The  concept of "instant gratification" is very  much  entrenched  in 
  319. modern  software  production. Sitting at their terminals in their  offices  or 
  320. cubicles,  programmers  very  much  resemble  "rats  in  Skinner  boxes"   who 
  321. continually press a lever (the RETURN key) for constant reenforcement of their 
  322. behavior.  We  are  only now beginning to see tools which  will  allow  us  to 
  323. "execute a design."
  324.  
  325.      4)  Software people have little faith in those concepts that come  before 
  326. the coding phase. "How can anyone possibly describe something which is not yet 
  327. coded?",  they  reason. There is little emphasis on non-coding tasks  in  most 
  328. commonly available training.
  329.  
  330. It  seems  that  most people have not understood the intentions  of  the  U.S. 
  331. Department of Defense (DoD) regarding the Ada effort. It is better  engineered 
  332. software  that is desired, not merely "FORTRAN rewritten using the syntax  and 
  333. semantics  of the Ada language." Too much emphasis has been placed on  a  tool 
  334. (Ada) and not on the task (better software). 
  335.  
  336. Learning  the  details  of the Ada language is at the "noise  level"  of  most 
  337. software  projects.  In  fact, only a very small part of  any  "Ada  education 
  338. effort"  needs  to focus on the language itself. Concepts  like  configuration 
  339. management,  software  design methodologies,  data  abstraction,  concurrency, 
  340. software testing, and project management must be an important part of any  Ada 
  341. training effort.
  342.  
  343. Of course, there are many problems which must be solved, for example:
  344.  
  345.      -  Contracting offices and project managers must recognize that the least 
  346. significant part of any Ada training effort is the learning of the syntax  and 
  347. semantics  of the language. Yes, it is important for programmers to learn  the 
  348. Ada  language,  but this is a trivial task compared to learning  about  modern 
  349. software engineering. 
  350.  
  351.      -   Many  of those who "teach" the Ada language are unfamiliar  with  the 
  352. bulk  of  modern  software  engineering.  For  example,  most  may  only  have 
  353. familiarity with functional decomposition approaches to software  development. 
  354. Few can name any references on software quality assurance. A surprising number 
  355. cannot  cite  any  studies which correlate coding  style  with  debugging  and 
  356. testing efficiency.
  357.  
  358.      -   When  software  engineering  concepts  are  introduced  into  an  Ada 
  359. curriculum,  it is often introduced in a very "watered down" form. This is  so 
  360. that  those  least  prepared to develop quality software  can  maintain  their 
  361. positions -- managers *and* programmers.
  362.  
  363.      -   There  is still a widely-held belief that all that is  involved  with 
  364. transitioning  to  Ada  technology is a change  of  programming  language.  In 
  365. reality,  software development and maintenance practices will have to  change, 
  366. in-house  and  government software standards will be  impacted,  and  business 
  367. practices  will change.  [It is often those in the commercial sector who  pick 
  368. this  up more readily than those in the defense sector. Further,  those  doing 
  369. business applications using Ada technology more quickly see the impact of  Ada 
  370. technology than those doing scientific and engineering applications.]
  371.  
  372. I  would  recommend that those charged with procuring Ada  training,  and  who 
  373. determine the Ada qualifications of a potential contractor, beyond mere coding 
  374. ability.  We  must  recognize that probably the  greatest  effort  facing  the 
  375. advocates of Ada technology will be reformation of "code junkies."
  376.  
  377.                 -- Ed Berard
  378.                    (301) 695-6960
  379.  
  380. .pa
  381. ==============================================================================
  382. I. D. Comments on Parts 1-3
  383. Date:         Mon, 4 May 1987 09:48 EST 
  384. From:         mike feldman <MFELDMAN%GWUVM.BITNET@wiscvm.wisc.edu>
  385. Subject:      Ed Berard's postings on education
  386.  
  387. Nice going again, Ed.
  388.  
  389. A cynic's view of all this might be that some of these contractors (and  their 
  390. opposite  numbers in the DoD project offices) may - precisely - _want_ Ada  to 
  391. fail  so they can continue with business as usual or find a convenient  excuse 
  392. for a waiver.
  393.  
  394. You  might accuse me of coming from a self-serving position, which I  am,  but 
  395. I'm  still convinced that the "Ada community" is still going about this  in  a 
  396. short-term  fashion. Ada and modern software engineering will succeed  in  the 
  397. long  run if we make it pervasive in the education process, which means  -  in 
  398. the long run - pervasive in university/college computing education.
  399.  
  400. This means a number of things:
  401.  
  402.      1.  Get  the  computer science  and  computer  engineering  accreditation 
  403. bureaucracies   to  recognize  that  software  engineering  is  a   legitimate 
  404. discipline  for  undergraduates.  It's  no  coincidence  that  most   software 
  405. engineering  teaching  is done at the grad level - you don't have  to  satisfy 
  406. accreditation bean-counters because graduate programs aren't accredited,  only 
  407. undergrad (did you know that?).
  408.  
  409.      2. Get the recognized textbook authors and mainstream publishers to write 
  410. books  that  will fit university curricula, which will not  change  overnight.  
  411. _Very  few_  Ada-oriented books fit into the right undergrad  pigeonholes.   I 
  412. tried  to do that with my Data Structures book, which sneaks Ada and  software 
  413. engineering  into  a mainstream undergrad course - where  is  my  competition? 
  414. Booch's  new  components book is _wonderful_ but probably too  voluminous  and 
  415. overtly  Ada-oriented to work in undergraduate courses, although I would  love 
  416. to be proved wrong.
  417.  
  418.      3. The Ada compilers-and-tools industry is also taking the  let's-get-the 
  419. short-term-bucks approach. This is a well-known hobbyhorse of mine, so I won't 
  420. bore  you  with  it again - but until the schools can get  into  Ada  and  Ada 
  421. environments  without  going broke in the process, they'll stick to  good  ol' 
  422. Pascal or whatever (Modula-2 _is_ starting to catch fire, though: do you think 
  423. most  of the same software engineering can be done with packages but no  other 
  424. Ada  goodies?).The  quality  of PC and Mac tools for  Pascal  and  C  oriented 
  425. education  gets better every day. And students can buy it for $35-50  a  copy. 
  426. Where is the _software engineering_ education tool stuff? Where is Ada for the 
  427. Mac?   Does anyone seriously believe that a school will plunk down $10000  for 
  428. _one_  copy of AdaGraph,even if you buy into the Pamela culture?  Does  anyone 
  429. seriously  think a school will invest heavily in Alsys systems? We  have  _30_ 
  430. AT's  in a lab. Shall we put Alsys on 30 machines, or spend the same money  to 
  431. buy  30  Macs  or PS2/50's? If you were the guy  making  a  recommendation  to 
  432. University managers (who are _really_ naive about software engineering),  what 
  433. would you recommend? This is not a hypothetical question: I am in in _exactly_ 
  434. that position.
  435.  
  436. Ed, and all the rest of you on the net: I'm not asking you for a handout. I've 
  437. spent  the  last  five years building grassroots support for  Ada  in  my  own 
  438. school.  I got it, but boy was it hard work, and I am not sure I would  invest 
  439. the  effort again, because 5 years ago I thought industry would recognize  the 
  440. need to do this nationally, but boy have I been disillusioned!
  441.  
  442. Ada and modern software engineering have _tremendous_ potential, and not  just 
  443. in  the  military  community. I have spent five years  as  a  computer-science 
  444. professor  trying to realize some of this potential. Industry: a few of us  in 
  445. the schools out here are really workin' hard to help you out; anybody ready to 
  446. help _us_?
  447.  
  448. Michael Feldman, Professor
  449. Department of Electrical Engineering and Computer Science
  450. The George Washington University
  451. Washington, DC  20052
  452. 202-994-7593
  453. MFELDMAN@GWUVM.BITNET
  454. MFELDMAN%GWUVM.BITNET@WISCVM.WISC.EDU
  455.  
  456. ---------------------------------------------------------------------------
  457. Date: 13 May 87 07:45:04 GMT
  458. From: hao!ico!rcd@ames.arpa  (Dick Dunn)
  459. Subject: Re: Ada Education and Training - Part 3
  460.  
  461. In  one part of a rather lengthy article, Edward Berard takes on  Kernighan  & 
  462. Ritchie's _The_C_Programming_Language_.  He was talking about an  introductory 
  463. text, so I'm not sure why he's picking on K&R, but he compares their book with 
  464. Booch:
  465.  
  466. > Kernighan and Ritchie (K&R) and Booch represent two very different
  467. > views on teaching programming. K&R stresses the age old thinking which
  468. > says that students of software must see, write, and execute code
  469. > before anything else will be meaningful.
  470.  
  471. This  is nothing more than an unthinking cheap attack on K&R.  It  would  seem 
  472. that Mr. Berard believes that K&R intends to teach programming simply  because 
  473. he  thinks it ought to do so.  However, if one manages to read as far  as  the 
  474. fourth paragraph of the Preface, one finds:
  475.  
  476.    "This book is not an introductory programming manual; it assumes some
  477.    familiarity with basic programming concepts..."
  478.  
  479. Perhaps this was overlooked--after all, the Preface of a book may not be  good 
  480. reading  (unless you want to know the purpose of the book:-), so let's have  a 
  481. look  at  the beginning of the "real" text.  If we read as far as  page  1  of 
  482. "Chapter 0" we find the following terms used without prior definition:
  483.  
  484.     programming language, operating system, text-processing, data-base,
  485.     characters, character strings, addresses, storage allocation, heap,
  486.     garbage collection, file-access methods, single-thread control
  487.     flow, coroutines
  488.  
  489. I  cannot, in my wildest dreams, imagine a normal neophyte being able to  read 
  490. this section...; he won't even be able to parse some of the sentences.
  491.  
  492. It  is not the case that K&R present the "programming first,  thinking  later" 
  493. approach.  They have set out to provide a ready introduction and reference for 
  494. a  particular programming language, and have succeeded in doing so.  K&R  have 
  495. been  set  up.   "We  want  an introductory  text.   We  will  label  them  an 
  496. introductory  text.  Then we will demonstrate that they have  failed."   [Hey, 
  497. look, the shop manual for my car doesn't provide spiritual guidance either.]
  498.  
  499. A somewhat worse confusion over teaching "programming" (I would rather a  less 
  500. loaded  term  implying  "the  complete  process  of  constructing  functioning 
  501. software") immediately follows in Berard's article:
  502.  
  503. >...Booch, on the other hand,
  504. > stresses that students should know what they are doing before they
  505. > attempt to write code...
  506.  
  507. The  reality  of  teaching  lies in  between  the  code-first  approach  (mis-
  508. attributed  to K&R, but it does exist elsewhere) and an approach  which  holds 
  509. off the code until the concepts are ingrained...because the fact of the matter 
  510. is  that  very few students can hang on to a  substantial  abstract  framework 
  511. without something concrete to which they can relate it.
  512.  
  513. This  is  easy to observe in engineering and  physical  science  undergraduate 
  514. curricula.   In  the  first  year the students will be  taking  (let  us  say) 
  515. calculus  and some substantial classical physics which requires calculus.   If 
  516. the  calculus courses follow a purely mathematical development  of  functions, 
  517. series,  limits, etc. without adequate illustration of the application of  the 
  518. concepts, the math instructors find that their students are learning  calculus 
  519. better--and faster--in their physics courses.
  520.  
  521. (There  are, of course, areas where it's hard to find the concrete  material--
  522. for example, some concepts in topology--but the production of software is  not 
  523. such an area.)
  524.  
  525. I'm not going to argue that the coding should come first.  That's not what I'm 
  526. saying  and it's not even in the back of my mind.  It would be silly to  teach 
  527. that  way...but  it's equally silly to think that you can (let  alone  should) 
  528. teach  the  concepts first and the programming later.  That's as  absurd  (and 
  529. antiquated)  as the "waterfall model" of software lifecycle.  Consider  it  an 
  530. overreaction to the "code first" approach.
  531.  
  532. It's all too simple:  Teach the two together.  Start developing the idea of  a 
  533. programming  language and a programming environment as you develop  the  first 
  534. concepts.   By the time you've got enough concepts to think about  interesting 
  535. problems,  you've also got enough concrete information to show what an  actual 
  536. solution to a simple problem might look like.  And, I know it's heresy in this 
  537. group where so many people think that there is One True Language, but you  can 
  538. use  a  couple of different programming languages to  illustrate  examples--if 
  539. you're careful, that can prevent students getting hung up on one language.
  540.  
  541. (This is somewhat how I was first taught.  Perhaps the two languages were  not 
  542. the  best choices--FORTRAN and BASIC--but hey, that was twenty-odd years  ago, 
  543. and it worked then.)
  544.  
  545. Another  way to look at what I'm saying:  overemphasizing the coding  is  bad; 
  546. ignoring it is just as bad.  A little more from Berard's article:
  547.  
  548. > Programming code is the "cocaine" of the software world. To many
  549. > programmers and managers it is all that matters...
  550.  
  551. Replace  "cocaine" with "currency".  To many clients in the commercial  world, 
  552. the  code  is [almost!] all that matters, because they  aren't  interested  in 
  553. plans and studies except insofar as they help produce the end result, and they 
  554. don't believe that they can sell specs-by-the-pound.
  555.  
  556. The methodology is not the end product.
  557.  
  558. >...While software is
  559. > being designed, managers wait nervously and the programmers/coders
  560. > wait impatiently...
  561.  
  562. So get some good managers!  Sheeeesh!  As for the programmers/coders:  If  you 
  563. divide your world into "those who design" and "those who implement the design" 
  564. you  have  created a caste system.  You have a social problem and  you  cannot 
  565. solve it by waving methodology about.
  566.  
  567. >...To an outsider this infatuation with code seems strange. One hears
  568. > from many sources that coding usually takes up only 10 to 15 percent
  569. > of the software life-cycle...
  570.  
  571. This  is a favorite litany of the methodology mavens...but if you think  about 
  572. it,  it's  only  reasonable.  Why is coding only 10-15%?   Well,  one  set  of 
  573. reasons  is that the code produced is so often late, inefficient, not  robust, 
  574. inscrutable,  unadaptable,  and nonportable.  We spend the bulk  of  our  time 
  575. screwing around with code that's already written because it was lousy code  in 
  576. the first place...somehow I don't buy the idea that the solution is to improve 
  577. our  ability to screw around with the code!  Couldn't we try just a little  to 
  578. reduce  the need to screw around with it?  If we had done a good job with  the 
  579. 10-15%  of  the  work,  a  lot of the  85-90%  remaining  wouldn't  have  been 
  580. necessary.
  581.  
  582. A couple more comments from Berard:
  583.  
  584. >    4) Software people have little faith in those concepts that come
  585. >       before the coding phase. "How can anyone possibly describe
  586. >       something which is not yet coded?", they reason...
  587.  
  588. Rubbish.  These aren't software people.
  589.  
  590. > It seems that most people have not understood the intentions of the
  591. > U.S. Department of Defense (DoD) regarding the Ada effort. It is
  592. > better engineered software that is desired, not merely "FORTRAN
  593. > rewritten using the syntax and semantics of the Ada language." Too
  594. > much emphasis has been placed on a tool (Ada) and not on the task
  595. > (better software). 
  596.  
  597. I  agree  with  this in a perverse sense:  I do not understand it  to  be  the 
  598. intent of DoD to produce better engineered software instead of a new language.  
  599. If that is what they desired, why did the requirements used in Ada development 
  600. (the  *man sequence) specify nitty details of syntax and semantics instead  of 
  601. focusing on requirements?  Why did they spend a decade screwing around with  a 
  602. programming  language before getting on to the environment?  Berard  is  quite 
  603. right  that  "too  much emphasis has been placed on a tool...and  not  on  the 
  604. task..."  -  and the nature of the development of Ada is the best  example  of 
  605. that misplaced emphasis.
  606. -- 
  607. Dick Dunn    {hao,nbires,cbosgd}!ico!rcd  (NOT CSNET!)   (303)449-2870
  608.  
  609. ---------------------------------------------------------------------------
  610. Date:         Thu, 14 May 87 17:06:02 PDT
  611. From:         "LT Scott A. Norton, USN" <4526P%NAVPGS.BITNET@wiscvm.wisc.edu>
  612. Subject:      Re: Ada Education and Training - Part 3
  613.  
  614. In <1061@ico.UUCP>, hao!ico!rcd@ames.arpa (Dick Dunn) remarked,
  615.  
  616. "A somewhat worse confusion over teaching 'programming' (I would rather a less 
  617. loaded  term  implying  'the  complete  process  of  constructing  functioning 
  618. software') immediately follows in Berard's article:"
  619.  
  620. I think the term he wants is "software engineering."
  621.  
  622. The  hard part about teaching software engineering is that the need  for  good 
  623. engineering  is  not apparent at the classroom level.  The programs  that  are 
  624. written  by  individuals in an undergraduate software course are less  than  a 
  625. thousand  lines.   They can be fully understood by one person.   They  do  not 
  626. undergo  maintenance, and do not have to adapt to changes in the  environment, 
  627. new  hardware,  or  changed specifications.  They usually do not  need  to  be 
  628. robust,  since  they  are  not used by many different  users  or  under  tight 
  629. constraints.
  630.  
  631. There is certainly a skill called "Programming." Selecting algorithms and data 
  632. structures,  making  loops  start  and stop  in  the  right  places,  avoiding 
  633. deadlocks;  they are all part of programming.  But, when you move to  programs 
  634. of  over one million lines, the problems you face are different.   Consistancy 
  635. of  the  specification becomes more difficult.  Testing and  debugging  become 
  636. more difficult ( some people say impossible ) Training new staff is  necessary 
  637. as the work progresses.  As people leave the project, the knowledge they  have 
  638. must  be passed down to the remaining staff.  Its not a difference  in  scale, 
  639. its a difference in kind.
  640.  
  641. If  you  teach a course in programming, you expect people to come  out  of  it 
  642. knowing how to write code.  Give them clear specifications and they should  be 
  643. able to write modules that will meet the specs.  But writing the specs, making 
  644. the  design  decisions  that determine the specs,  managing  the  programmers, 
  645. designing  tests,  chasing down the requirements that the  system  must  meet, 
  646. developing  the documentation, training the staff ( not how to code, but  what 
  647. the  project  is  supposed to do ) are part of the larger  world  of  software 
  648. engineering.   Its  a  different dicipline, and can't be taught  in  a  single 
  649. course.
  650.  
  651. Ada  is  supposed to be a language that makes it easier to  match  modules  to 
  652. specs,  design tests, eliminate some tacit assumptions about  interfaces,  and 
  653. make  code  more readable to ease the problems of bringing new people  into  a 
  654. project  or of doing maintenance.  Ada will be successful if it  improves  not 
  655. only coding, with its 15% of the load, but also these other areas.
  656.  
  657.   Programming : Software Engineering :: Word Processing : Writing a novel
  658.  
  659. When  I was in fourth grade, I thought that higher math was being able to  do, 
  660. like, really big long division problems.
  661.  
  662. LT Scott A. Norton, USN
  663. Naval Postgraduate School
  664. Monterey, CA 93943-5018
  665. 4526P@NavPGS.BITNET
  666.  
  667. ---------------------------------------------------------------------------
  668. Date: 6 May 87 08:56:00 GMT
  669. From: mcvax!unido!tub!cabo@seismo.css.gov
  670. Subject: Re: Ada Education and Training - Part 3 - (nf)
  671.  
  672. In  an  otherwise  very reasonable article  in  comp.lang.ada,  ucbvax!EBERARD 
  673. (probably wrong address) writes:
  674.  
  675. () [...] K&R stresses the age old thinking which
  676. () says that students of software must see, write, and execute code
  677. () before anything else will be meaningful. Booch, on the other hand,
  678. () stresses that students should know what they are doing before they
  679. () attempt to write code. The K&R approach has its roots in software
  680. () antiquity.
  681.  
  682. K&R  is a book about a programming language (a good one at that, by the  way).  
  683. Grady Booch's book is a book about software design in a programming  language. 
  684. These are two entirely separate subjects.  You can learn software  engineering 
  685. methods without learning the syntax of the Ada language at the same time,  and 
  686. you  can  learn  programming in C  without  simultaneously  learning  software 
  687. engineering methods.
  688.  
  689. A book that both teaches software engineering and a programming language seems 
  690. to  assume  that  the intended audience still needs to  learn  both  subjects.  
  691. Probably  a  reasonable assumption for many people who are now  learning  Ada. 
  692. Even  more  so  in  that Ada does have a few fine  points  that  only  can  be 
  693. unleashed in conjunction with knowledge about software engineering.
  694.  
  695. For  the C language novice in 1978 (when K&R was written), such an  assumption 
  696. would  have  been  invalid; I would have been bored if  K&R  had  placed  more 
  697. emphasis on the methods I already had been comfortable with in languages  like 
  698. Simula  etc.  that I had used before.  Its successor, the book about  the  C++ 
  699. language  (Bjarne  Stroustrup 1986) still assumes some basic  knowledge  about 
  700. software  engineering when giving rules of thumb for the use of C++.  The  Ada 
  701. Reference  Manual (which is comparable to the reference sections of  both  K&R 
  702. and BS) also does not give any guidelines for design and testing methods  (and 
  703. we all agree it should not do that), but if you know anything about design you 
  704. immediately  understand  what packages and all these Ada concepts  are  about, 
  705. although these are complex enough that a good text will help you use the right 
  706. concept at the right time.
  707.  
  708. For the software engineering novice (as opposed to the C language novice  that 
  709. K&R  addresses), it is an interesting issue (e.g. see comp.edu)  whether  some 
  710. early  experience in simple programming helps understand software  engineering 
  711. concepts later or just helps people to start programming without design.
  712.  
  713. For  university  education, I still prefer first to learn to  put  letters  on 
  714. paper (i.e. programming) before learning to write entire books (i.e.  software 
  715. design).  However, just being able to put letters on paper does not make you a 
  716. writer (i.e. just being able to program does not make you a programmer).
  717.  
  718. Carsten Bormann, <cabo@tub.UUCP> <cabo@db0tui6.BITNET> <cabo@tub.BITNET>
  719. Communications and Operating Systems Research Group
  720. Technical University of Berlin (West, of course...)
  721.  
  722. ==============================================================================
  723. I. E. Ada Education and Training - Part 4
  724. Date:  7 May 1987 04:27:38 PDT
  725. Subject: Ada Education and Training - Part 4
  726. From: Edward V. Berard <EBERARD@AJPO.SEI.CMU.EDU>
  727.  
  728. You  might  say that this is a discussion of the "dynamics of  Ada  technology 
  729. education." First, a few simple ground rules:
  730.  
  731.      1)  Education is different from training. To be crude about it,  training 
  732. is  what  you do with dogs, education is what you do with  people.  Seriously, 
  733. training of people works best with material which is extremely simple and  has 
  734. well-defined ("black and white") rules. If something can be done by rote, then 
  735. training  is  appropriate. Education of people is what is  required  when  the 
  736. rules  and  guidelines  of  a technology do  not  easily  lend  themselves  to 
  737. simplistic  ("black  and white") interpretations. There may be  many  possible 
  738. answers  to a single problem, and the identification of a specific  acceptable 
  739. set  of solutions will change depending on the particular constraints you  put 
  740. on the problem.
  741.  
  742.      2)  A  consequence  of the above is that education  may  require  certain 
  743. skills  and aptitudes that are not necessary for training. For example,  while 
  744. training might be appropriate for an electronics technician, education is what 
  745. is  required  for an electronics engineer (here, an  electronics  engineer  is 
  746. taken  to  mean  someone  with at least  a  bachelors  degree  in  electronics 
  747. engineering).
  748.  
  749.      3)  A  one-word definition for learning is: change.  Both  education  and 
  750. training require change. Often this change is not limited to the mental  state 
  751. of  the individual being educated or trained, but also extends to the  working 
  752. environment of that individual.
  753.  
  754.      4) Two very different paths are taken with the activities associated with 
  755. training and education. Since training is appropriate for situations requiring 
  756. little original human thought or judgment, the activities for which a human is 
  757. trained can often be easily automated. (Consider, for example, the training of 
  758. a  welder on an assembly line, and the eventual replacement of that welder  by 
  759. robots.)  Activities requiring education, on the other hand,  usually  involve 
  760. many  constantly  varying pieces of information. The  tools,  techniques,  and 
  761. methods  used  to handle situations for which education  is  appropriate,  may 
  762. themselves be quite complex. (Consider, for example the use of mathematics  to 
  763. calculate  the  dynamics  of the liquid fuel in  a  rocket  during  take-off.) 
  764. Typically,  situations requiring education lend themselves to  being  assisted 
  765. by, but not replaced by, automation.
  766.  
  767. There  are many players in the dynamics of Ada technology education.   In  the 
  768. case of U.S. Department of Defense (DoD) related efforts, the player  farthest 
  769. removed from the actual engineering of the Ada software is the customer, i.e., 
  770. the  DoD. These people must be educated to the point where they  realize  that 
  771. training  is  NOT  appropriate  for Ada  technology,  but  that  education  is 
  772. required.
  773.  
  774. Many  of  us  have been denying the truth for years. We  may  have  felt  that 
  775. software production and maintenance required training, not education. This  is 
  776. not true. In fact, we should have been educating our technical and  managerial 
  777. personnel  in software engineering technology all along. The DoD's Ada  effort 
  778. is  the collection agent, and it is here to collect all our past due  software 
  779. engineering  education.  This  is  what  makes  Ada  technology  education  so 
  780. difficult.  Ada educators must not only teach the syntax and semantics of Ada, 
  781. but they must also educate their students in software engineering technology. 
  782.  
  783. Closer  to home, we have the management of the organization requiring the  Ada 
  784. technology  education.  Management  must understand that they  must  help  and 
  785. encourage  Ada  technology education. They must provide the tools  and  people 
  786. necessary  for  good Ada technology education. They must let the  people  they 
  787. manage know that they take software seriously. It is management which can make 
  788. or break an Ada technology education effort.
  789.  
  790. Two  contrasting  examples  are  necessary here. At  Magnavox  in  Ft.  Wayne, 
  791. Indiana,  Management was seriously committed to the concept of Ada  technology 
  792. education:
  793.  
  794.      -   Management required themselves to go through the same  training  that 
  795. they put their technical staff through. This began to make them aware of  what 
  796. their technical could expect, and gave management a chance to ask questions in 
  797. context.
  798.  
  799.      -  Management had themselves trained first. This gave them the lead  time 
  800. to  begin preparing themselves and their staff for the changes which  were  to 
  801. come.
  802.  
  803.      -  Training was from 7:30 A.M. to 4:30 P.M. every day with one-half  hour 
  804. off for lunch. The class participants were already working on their labs  when 
  805. the  instructor arrived, and continued to work after the instructor  left  for 
  806. the day.
  807.  
  808.      -   No one was allowed to disturb the class. Unless it was a truly  life-
  809. and-death  matter,  the best that anyone could do was to place a note  on  the 
  810. classroom door if they wanted to get the attention of a class participant. 
  811.  
  812.      -  Management made sure that tools (e.g., an Ada compiler) were  procured 
  813. as early as possible, and that all that needed to, had access to the tools.
  814.  
  815. Another  organization (unfortunately, a well-known name in the  Ada  business) 
  816. had  management  which  did  about everything they could  do  to  prevent  Ada 
  817. education from happening:
  818.  
  819.      -  They delayed any kind of Ada technology education until shortly before 
  820. the coding was to start on the project.
  821.  
  822.      -   They did not allow their technical staff to participate in  classroom 
  823. activities on a regular basis. The number of students in the class room varied 
  824. from zero to about seven. (That's right, one day the instructor showed up, and 
  825. there were no students in the class for most of the day.)
  826.  
  827.      -  Management themselves kept well away from the classroom.
  828.  
  829.      -  During the first course which required the use of an Ada compiler, the 
  830. labs were delayed because the compiler was not even installed until the middle 
  831. of  the week. Even when the compiler was installed, it was installed so  badly 
  832. that it was all but unusable. 
  833.  
  834. In  summary,  management  can  either  aid  the  dynamics  of  Ada  technology 
  835. education, or ensure the failure of Ada technology transfer.
  836.  
  837. Inside  the  classroom,  we have another set  of  dynamics,  specifically  the 
  838. relationship between the instructor and the students. A good instructor  knows 
  839. that  "education  is  a two-way street." The instructor  must  listen  to  the 
  840. students and be sensitive to their needs. The instructor must make  reasonable 
  841. attempts to reach most, if not all of the people in the class.
  842.  
  843. In  industry  (as  opposed  to  academia),  at  least  fifty  percent  of   an 
  844. instructor's  job  is  leadership.  An instructor  must  both  listen  to  and 
  845. understand  the  needs  of the people he or she  is  charged  with  educating. 
  846. However,  it is the instructor who must motivate and lead the class.  This  is 
  847. especially crucial in the case of Ada technology education.
  848.  
  849. Many students arrive at their first Ada class fully expecting a syntax course. 
  850. It  takes work and a good deal of persuasion to foster a desire  for  software 
  851. engineering as opposed to just learning the syntax of "just another language." 
  852. Some  Ada instructors are bullied by their students into providing  a  syntax-
  853. only course. (I remember advising one of these instructors to "get up early on 
  854. Sunday morning and watch some of the TV evangelists for inspiration.")
  855.  
  856. Just getting into the classroom can be a challenge. The perspective instructor 
  857. must  successfully  persuade management that software engineering  is  a  good 
  858. thing, and is more important than Ada syntax.
  859.  
  860. The  instructor  must  not insult the intelligence of  his  or  her  students. 
  861. Students are fully capable of learning about software engineering on the  very 
  862. first  day  of  instruction. The belief that students must  know  code  syntax 
  863. before software engineering will make any sense is just plain wrong.  Software 
  864. engineering  instructors  have  two things going  for  them.  First,  software 
  865. professionals are very "goal oriented." Once proper goals are set  perspective 
  866. software engineers will strive for them. Second, most software engineers  want 
  867. to  to  the  best job they possible can. Showing how each  piece  of  software 
  868. engineering  technology aids in achieving this goal helps the  Ada  technology 
  869. instructor get the job done.
  870.  
  871. If, however, the instructor does not have a firm grasp of software engineering 
  872. technology,  he or she cannot hope to convey the technology to  the  students. 
  873. Merely  saying  the words "abstraction" and "information hiding" a  few  times 
  874. does  not  merit  being  called  a  software  engineering  approach.  Software 
  875. engineering  is  an enormous discipline encompassing  methodologies,  metrics, 
  876. mathematics, computer science, engineering disciplines, analytical and logical 
  877. thinking, communication skills, and other factors.
  878.  
  879. The  classroom dynamics I have just described also work in  academia.   Having 
  880. taught in college classrooms for regular college courses myself, I can  attest 
  881. that from the first day in their freshmen classes, college students are  fully 
  882. capable of understanding engineering disciplines. Consider the freshman who is 
  883. an  electronics  engineering  student.  He or she  may  have  entered  college 
  884. thinking  that  electronics engineering was little more than  "building  Heath 
  885. kits."   However,  engineering  students soon find themselves  in  classes  on 
  886. complex   analysis,  differential  equations,  physics,  chemistry,   statics, 
  887. dynamics, strength of materials, English, history, and other disciplines. 
  888.  
  889. The  same kind of thinking holds for software engineering students.  They  may 
  890. enter a university thinking that software engineering is "glorified  hacking," 
  891. but  they  are  just  as capable as the  electronics  engineering  student  of 
  892. learning  the  full  discipline, not just the least  significant  part  (i.e., 
  893. coding).
  894.  
  895.                 -- Ed Berard
  896.                    (301) 695-6960
  897.  
  898. ==============================================================================
  899. I. F. Comments on Parts 1-4
  900. Date: Mon 18 May 87 08:33:24-PST
  901. From: CONTR47@NOSC-TECR.ARPA
  902. Subject: Thoughts provoked by Ed Berard's articles
  903.  
  904.      I always enjoy reading Ed Berard's articles because they are very thought 
  905. provoking. I usually agree with his observations and usually disagree with his 
  906. conclusions and recommendations. The recent 4 part discourse is not unusual in 
  907. that respect. While reading I mentally composed pages of response and wondered 
  908. which  responses, if any would be worthy of net resources.
  909.  
  910.      Then  I  received  a  paper from the SEI  by  Watts  S.  Humphrey  titled 
  911. "Software  Process Management" which contains a concluding thought that  seems 
  912. to  sum up my possible responses to Ed's articles. "There is a  definition  of 
  913. insanity that applies to software development. It is said that insane  persons 
  914. believe they can continue doing the same thing over and over and get different 
  915. results".  Upon  reading that I realized that I have been insane  most  of  my 
  916. career. I was insane when I expected engineers and managers to immediately see 
  917. the  advantage of transistors over vacumn tubes. I was insane when I  expected 
  918. them to see the advantage of computers over analog control. I was insane  when 
  919. I  expected  them  to see the advantage of Ada over Fortran until  I  said  to 
  920. myself  "Self- That's enough- Only deal with people who have already  accepted 
  921. that  there  is  an advantage and want help  realizing  the  advantage."
  922.  
  923.      This  happened  about the same time I started my own company  and  became 
  924. interested in profit. i.e.: There isn't much profit in missionary work. I have 
  925. a placard that says "Never try to teach a pig to sing: It will waste your time 
  926. and it annoys the pig." I believe that Ed is attempting to teach pigs to  sing 
  927. as I have often done. It is a form of insanity according to Humphrey. It takes 
  928. 14 or so years for a new technology to be widely used in practice according to 
  929. SEI  (from  my  memory)  and  I  think it  will  be  so  for  modern  software 
  930. engineering/Ada  and there isn't much Ed or I can do about it.  Hopefully  the 
  931. SEI  can  do something about it through the  software  engineering  curriculum 
  932. design.
  933.  
  934.      So  Ed, my reaction to your discourse is to not criticize anyone for  not 
  935. immedialtely  seeing  the advantages of Ada, work with the ones  who  ask  for 
  936. help.  The  14 years will pass quickly and you'll be working on the  next  new 
  937. technology by then.
  938.  
  939. regards, sam harbaugh
  940.  
  941. ---------------------------------------------------------------------------
  942. Date:     Tue, 19 May 87 23:32 CDT
  943. From:     "Pat Rogers, High Tech Lab" <ROGERS%uhcl.csnet@RELAY.CS.NET>
  944. Subject:  Software Engineering education, etc
  945.  
  946. Of all people, I think Niccolo Machiavelli said it best:
  947.  
  948.     Nothing is more difficult to carry out, nor more doubtful of
  949.     success, nor more dangerous to handle, than to initiate
  950.     a new order of things. For the reformer has enemies in all 
  951.     those who profit by the old order, and only lukewarm defenders
  952.     in all those who would profit by the new order, this luke-
  953.     warmness arising partly from ... the incredulity of mankind,
  954.     who do not truly believe in anything new until they have
  955.     had actual experience in it. (The Prince)
  956.  
  957. While Sam is correct in saying that missionaries do not usually turn a  profit 
  958. (recent televangelists notwithstanding), the missionary's position, if  you'll 
  959. pardon  the  pun, is that preaching to the choir is a lot easier  but  doesn't 
  960. address  the  audience most in need. This is actually a  worthwhile  attitude, 
  961. when  one considers the importance of some of the projects now  or  soon-to-be 
  962. underway.  More than a few people I've run across sound like the  people  with 
  963. which Machiavelli tangled, back in the early 1500's. (We can only assume  that 
  964. they  are not the same people.) In all seriousness, I don't always agree  with 
  965. the  things  I  read about Software Engineering education either,  but  it  is 
  966. important work, and is worthy of our support.
  967.  
  968. Regards,
  969.  
  970. Pat Rogers
  971. PRogers@Ada20
  972.  
  973. .pa
  974. ============================================================================
  975. II. The Human Element in Software Engineering
  976. Date: 19 May 1987 04:31:13 PDT
  977. Subject: The Human Element in Software Engineering
  978. From: Edward V. Berard <EBERARD@ADA20.ISI.EDU>
  979.  
  980. There  is a good deal of wisdom in Sam Harbaugh's response to my recent  four-
  981. part article on Ada Education and Training. I especially agree with his citing 
  982. of  the old adage: "Never try to teach a pig to sing: it will waste your  time 
  983. and  it  annoys the pig." In fact, another old saying: "Neither cast  ye  your 
  984. pearls  before swine." (Matthew 7:6) also came to mind regarding  the  natural 
  985. human tendency to reject new technology.
  986.  
  987. Technologists, in general, very often ignore the human element in  technology. 
  988. Many erroneously believe that it is technology that advances technology, when, 
  989. in fact, it is economics, politics, and sociology which are the main causes of 
  990. technological  change. Nowhere is the attempt to remove  human  considerations 
  991. from  technology so blatant as it is in the state-of-the-practice of  software 
  992. engineering.  Consider the following:
  993.  
  994.      1)  Although  people such as Barry Boehm have been telling us  for  years 
  995. that  the greatest improvements in technology will occur when we  improve  the 
  996. capabilities  of  the humans involved in the process (See the front  cover  of 
  997. Barry's  book, "Software Engineering Economics."), we continually ignore  this 
  998. advice. It seems we much more comfortable creating new automated tools than we 
  999. are  with measuring and improving the capabilities of the humans who  will  be 
  1000. using the tools.
  1001.  
  1002.      2)  Sociologists  tell  us  that while bringing a  group  of  people  one 
  1003. generation ahead in technology is difficult, bringing a group of people  ahead 
  1004. two  generations of technology is all but impossible. In the area of  software 
  1005. engineering,  the  state-of-the-practice  is easily two  or  more  generations 
  1006. behind  the  state-of-the-art. This leads to some  interesting  results.   For 
  1007. example,  while we currently possess the technology to increase  our  software 
  1008. engineering  productivity by at least an order of magnitude, we cannot  expect 
  1009. people to begin using this technology on a large scale for at least a  decade. 
  1010. (Yes, Sam, I do agree with your observation.)
  1011.  
  1012.      3) New technology is seldom what people expect it to be. I used to give a 
  1013. seminar on "Measuring and Improving Programmer Productivity." This seminar was 
  1014. attended  chiefly by managers who expected me to tell them how to  make  their 
  1015. programmers code faster in the programming language of their choice. When they 
  1016. heard that the largest gains in productivity required such items as a shift to 
  1017. fourth-generation  languages,  off-the-shelf software, and  smaller  technical 
  1018. staffs,  the managers often refused to accept the facts, *even when  presented 
  1019. with documented evidence supporting the facts.*
  1020.  
  1021.      4)  Even when people claim that they are ready to accept new  technology, 
  1022. or  even to enthusiastically pursue new types of technology, they often  spend 
  1023. enormous amounts of resources (in most cases, the majority of their resources) 
  1024. "re-inventing or re-discovering the wheel." The concept of a simple literature 
  1025. search is beyond most of the people in the software business today. Even those 
  1026. who  are capable of even feeble scanning of the technical literature are  ill-
  1027. equipped  to  understand,  much less accurately  interpret,  what  they  find. 
  1028. Recently,  someone  from  one  of the more  prestigious  centers  of  software 
  1029. engineering  technology  transfer called to ask me about a  methodology.  This 
  1030. person  was  part  of  a group  which  was  researching  software  development 
  1031. methodologies.  This person was shocked when I told him that the work  he  was 
  1032. charged  with had been done at least six times before. Indeed, in addition  to 
  1033. numerous government sponsored reports available on the topic, five or six IEEE 
  1034. tutorials, at least three hardback books, numerous foreign government studies, 
  1035. and  several  publicly available industry and academic studies,  there  is  at 
  1036. least one public seminar on the topic he was researching.
  1037.  
  1038.      5)  Technical  people seem very uncomfortable with  concepts  of  ethics, 
  1039. morals,  and  responsibility. For example, few  software  engineering  courses 
  1040. discuss  the  ethical  implications of a  managerial  or  technical  decision. 
  1041. Although there are quite a number of courses and seminars about software  law, 
  1042. most  deal  with  the  protection of copyrights -- as  opposed  to  the  legal 
  1043. responsibilities  of  the  author of the software if  reasonable  use  of  the 
  1044. software results in damage to the user.
  1045.  
  1046. As  I  have  stated before, most people are  more  comfortable  talking  about 
  1047. technological change than doing anything about it. As a consultant, I am often 
  1048. asked to pose solutions to any number of software engineering problems. It  is 
  1049. a  sad fact that most of the people who pose the problems to me are  "insane." 
  1050. (Insane by W.S. Humphrey's definition: "There is a definition of insanity that 
  1051. applies  to software development. It is said that insane persons believe  they 
  1052. can  continue doing the same thing over and over and get different  results.") 
  1053. They  do  not want to hear the best, or even a correct, answer. They  want  to 
  1054. hear more of the same.
  1055.  
  1056. Sam  is  also right on another point. The financial rewards of  being  on  the 
  1057. leading edge of technology are meager at best. It is little comfort to realize 
  1058. two  years  later  that you did indeed accurately  predict  the  technological 
  1059. future, but will have to wait another two years to take economic advantage  of 
  1060. your prediction. In Greek mythology, a woman named Casandra was cursed by  the 
  1061. gods.  She was given the power to accurately predict the future. However,  the 
  1062. gods made sure that no one would believe her predictions.
  1063.  
  1064. There  is, however, another view. Without people motivating and  cajoling  the 
  1065. technical  population, there would be little work for people like Sam. So,  in 
  1066. the  future, I will continue in my attempts to "teach pigs to sing."  I  guess 
  1067. what  motivates  me is that I have had some success with  changing  pigs  into 
  1068. quasi-rational  human beings.  (Another of the ancient Greeks, Homer, told  us 
  1069. about Circe, a sorceress who turned men into animals. You might say that I  am 
  1070. attempting to "reverse the curse.")
  1071.  
  1072.                 -- Ed Berard
  1073.                    (301) 695-6960
  1074.  
  1075. .pa
  1076. ===========================================================================
  1077. III. A. The DoD and Software Reuse - Part 5
  1078. Date: 15 Jun 1987 03:13:47 PDT
  1079. Subject: DoD and Software Reuse - Part 5
  1080. From: Edward V. Berard <EBERARD@ADA20.ISI.EDU>
  1081.  
  1082. Recently, I have had a number of conversations with DoD contractors  regarding 
  1083. software reuse. While they all refuse to have their names used, they were very 
  1084. honest with me about their opinions on the future of software reuse within the 
  1085. DoD. Some points you might find interesting are:
  1086.  
  1087.      1.  Software  reuse is something which is virtually  meaningless  to  the 
  1088. highest  levels  of management in most organizations doing business  with  the 
  1089. U.S.  Department  of Defense (DoD). When these high-level  managers  are  told 
  1090. about software reuse, they have one primary question: "How does it affect  the 
  1091. bottom  line?" In other words, is this a concept which will make  the  company 
  1092. more money? Given the current state of affairs, the answer is "no."
  1093.  
  1094.      2.  One of the reasons that the answer is currently "no,"  is  cost-plus-
  1095. fixed-fee (CPFF) contracting practices. Specifically, the more people put on a 
  1096. project, the more money a contractor makes. Making reuse of software  actually 
  1097. costs  the company money. Fixed price contracts, as they currently exist,  are 
  1098. not  an  obvious  inducement  to reuse software  because,  as  more  than  one 
  1099. contractor told me, "once we get a fixed price contract, we can always get the 
  1100. government to give us additional money."
  1101.  
  1102.      3. At a briefing for contractors, an Army general said that "Ada appeared 
  1103. to  be  "taking  off" in the commercial (non-military) sector."  "One  of  the 
  1104. reasons  for  this,"  the  general continued, "was  because  of  the  software 
  1105. reusability  benefits  that Ada provides. We think that our  contractors  will 
  1106. also  see  these  same benefits and begin to make software  reuse  the  normal 
  1107. practice."  Some of the contractors at the briefing felt that the general  was 
  1108. very naive about the ways of government contracting to make such a statement.
  1109.  
  1110. So  what can we learn from the above? The first thing we must realize is  that 
  1111. organizations which develop software are run by people whose primary  interest 
  1112. is profit. "Ignoring the concepts of ethics and morality," one contractor told 
  1113. me, "it does not seem to be currently in the best interests of a contractor to 
  1114. develop  the  most  cost  effective  solution  for  any  government   software 
  1115. contract."
  1116.  
  1117. We must also recognize that the commercial sector and the government  software 
  1118. sector  are two very different animals. In the commercial sector, a  developer 
  1119. often  pays all the costs for product development, hoping to more than  recoup 
  1120. these  costs  based  on sales of the product.  With  this  type  of  scenario, 
  1121. software  reuse makes a great deal of sense, i.e., the lower  the  development 
  1122. costs,  the  lower  the risks and the greater the  potential  profit.  On  the 
  1123. government  side,  the  software  developer  has  little  risk.  The  software 
  1124. developer is being paid to develop a product, not to sell it. The greater  the 
  1125. development costs, the more money the contractor makes. If the product  fails, 
  1126. or  is  never  completed, the only one who loses is the  government.  (To  add 
  1127. insult  to  injury, many contractors take the technology they  have  developed 
  1128. under government contract and turn it into viable commercial products.)
  1129.  
  1130. "In  order  for software reusability to take hold  in  government  contracting 
  1131. organizations," another contractor told me, "it must be made meaningful to the 
  1132. highest  levels of contractor management." If they are aware of  it,  software 
  1133. reusability  is  often  only  a  phrase to  the  upper  levels  of  contractor 
  1134. management.  Since  it  is  the highest levels  of  management  who  can  most 
  1135. effectively make software reusability a reality, the government must seek ways 
  1136. to make software reusability "real" (and profitable) to these people.
  1137.  
  1138.                 -- Ed Berard
  1139.                    (301) 695-6960
  1140. .pa
  1141. ---------------------------------------------------------------------------
  1142. III. B. Comments on Part 5
  1143. Date: Mon 15 Jun 87 17:55:19-PST
  1144. From: CONTR47@NOSC-TECR.ARPA
  1145. Subject: comments on Ed Berard's S/W reuse part 5
  1146.  
  1147. 1.    I believe that the contractors skill at S/W reuse will provide  him  the 
  1148. most advantage at bid time. The Government is *very* considerate of price when 
  1149. awarding contracts. The contractors who are most skilled at reuse will win the 
  1150. most contracts while those who bid all new code in order to collect the higher 
  1151. fees will suffer.
  1152.  
  1153. 2.    My  experience at a large DoD contractor was contrary to what  is  being 
  1154. told to Ed. It was *very* difficult to get add-on money to either CPFF or  FFP 
  1155. contracts  unless the Government was clearly getting additional value for  the 
  1156. money.   I have heard extreme examples of rip-offs during the Vietnam war  but 
  1157. all the time I worked there it was not under war emergency conditions and  the 
  1158. Government was a *tough* customer.
  1159.  
  1160. 3.   My  personal  opinion  is  to question the  data  being  told  to  Ed  by 
  1161. "management".  My experience has been that administrative  management  doesn't 
  1162. always know what is going on; The program manager does but he wouldn't tell so 
  1163. unless  you have some clout (like work for the Defense Contract Audit  Agency) 
  1164. you  are  not going to know "the facts". The work I recently did on  Ada  cost 
  1165. modelling  showed us that very few people really knew what was going on.  Only 
  1166. by careful recall on the part of the development manager could he remember why 
  1167. certain  costs were unusual values. It was the unusual values that caused  him 
  1168. to recall that reuse played an *important* part in S/W actual costs. Since  we 
  1169. have now come full circle back to the value of reuse I'll sign-off.
  1170.  
  1171. regards, Sam Harbaugh
  1172.  
  1173. --------------------------------------------------------------------------
  1174. Date: 16 Jun 1987 02:17:55 PDT
  1175. Subject: Putting Software Reuse in the RFP
  1176. From: Edward V. Berard <EBERARD@AJPO.SEI.CMU.EDU>
  1177.  
  1178. I  have  had  some  interesting  responses  to  my  most  recent  posting   on 
  1179. reusability.  Some  are along the lines of "you are belaboring  the  obvious."  
  1180. Others  are  similar to the response that Sam Harbaugh provided,  i.e.,  "your 
  1181. 'facts'  are  not  on  target."  What  this  mixture  of  responses  seems  to 
  1182. demonstrate  is  the  confusion over the "real" impact of  software  reuse  on 
  1183. government procurements.
  1184.  
  1185. One  point  that  is  worth mentioning is that lower price  alone  is  not  an 
  1186. indicator  of  software  reuse. The government needs to  know  what  they  are 
  1187. getting for their money. For example, one could bid a lower price by  limiting 
  1188. the  scope  of  the delivered product, underestimating the  actual  costs,  or 
  1189. "buying"  a contract (purposely bidding less than what you know what the  true 
  1190. cost of the contract will be, most often for some future profit motive). 
  1191.  
  1192. One  approach  that  some government agencies have begun to  use  is  to  make 
  1193. software reuse highly visible in the original RFP (Request For Proposal).  For 
  1194. example,  bidders  are required to provide some estimate of the  size  of  the 
  1195. delivered software -- typically in "lines of code."  In addition, the  bidders 
  1196. must  provide an estimate of how much reusable software will  be  incorporated 
  1197. into  the  delivered  product, and they must also describe  how  this  "reused 
  1198. software" will impact the cost, quality, etc. of the product.
  1199.  
  1200. Given  this, and other, information, the requester can begin to get  a  better 
  1201. understanding of what the different bidders are proposing.  Suppose one bidder 
  1202. estimates  the  size  of  project at "50,000 lines  of  code,"  while  another 
  1203. estimates the size to be "100,000 lines of code."  There could be many reasons 
  1204. for the difference, but it will be likely that the bidder with fewer lines  of 
  1205. code will submit a lower bid.
  1206.  
  1207. If,  however, two, or more, bidders provide similar estimates as to  the  size 
  1208. and  scope of the delivered product, a more accurate picture of the impact  of 
  1209. software  reuse  is  possible. Everything else being equal (Yes,  I  know,  it 
  1210. seldom  is.), the bidder who plans to incorporate significantly more  reusable 
  1211. software into the delivered product should be able to submit the lower bid.
  1212.  
  1213. One  government agency told me that they recently acquired an Ada  application 
  1214. which  was  about 100,000 "lines of code" in size with an expended  effort  of 
  1215. "significantly less than a man-year."  This was possible because of the  heavy 
  1216. reuse of software on the project.  (One very large company I talked with, told 
  1217. me  that they might "optimistically" bid this same contract at "20  man-years" 
  1218. of effort.)
  1219.  
  1220.                 -- Ed Berard
  1221.                    (301) 695 - 6960
  1222.  
  1223. ---------------------------------------------------------------------------
  1224. Date:     Tue, 16 Jun 87 11:14 EDT
  1225. From:     Pete Schilling <"VAXTSD::SCHILLING1%atc.alcoa.com"@RELAY.CS.NET>
  1226. Subject:  Software Reuse
  1227.  
  1228. This  may  seem  incredibly naive to those who have  long  experience  in  the 
  1229. Defense contracting game, but it deserves saying anyway:
  1230.  
  1231. If the benefits of software reuse are real, then --
  1232.      -  A  product that makes significant reuse of software  should  be  ready 
  1233. sooner than one that represents all new code.
  1234.      -  Saying  than another way, a product that makes  significant  reuse  of 
  1235. software could be started later in the system development cycle. 
  1236.      -  The reliability of a product that makes significant reuse of  software 
  1237. should be higher that an equivalent product that represents all new code.
  1238.      - Other quality characteristics of a product that makes significant reuse 
  1239. of  software should be much more predictable than one that represents all  new 
  1240. code.
  1241.      -  The  maintenance cost of the product that makes significant  reuse  of 
  1242. software should be lower.
  1243.  
  1244. If all of the above is really true, then the customer should be willing to pay 
  1245. MORE for a product that makes significant reuse of software than for one  that 
  1246. represents all new code.  
  1247.  
  1248. Pete Schilling            CSNET:    SCHILLING@ATC.ALCOA.COM
  1249. Technical Specialist        PHONE:    412/337-2724
  1250. Process Control and        PAPER MAIL:    Aluminum Co. of America
  1251.    Computer Technology Divn.        Alcoa Center, PA  15069
  1252. Alcoa Laboratories            USA
  1253.  
  1254. ---------------------------------------------------------------------------
  1255. Date: Wed, 17 Jun 87 07:43:22 EDT
  1256. From: schimsky@nadc.arpa (D. Schimsky)
  1257. Subject: Re:  Software Reuse
  1258.  
  1259. As  a "Government" manager of major software developments, let me  offer  that 
  1260. most of comments I've seen here relative to "re-use" appear academic.   
  1261.  
  1262. 1.  No,  I would NOT pay more for a product that takes  advantage  of  re-use, 
  1263. since  virtually  my  entire  concern  is  to  LOWER  the  price  of  software 
  1264. development.   There  is no way, short of pushing my nose in it, that  I  will 
  1265. believe  a paper analysis showing me how much I will save tomorrow if  only  I 
  1266. give you more today.
  1267.  
  1268. 2.  Short of absolute mandate (translate to "I order you to...") the  detailed 
  1269. methods employed in the development of software are made on a very local level 
  1270. by  the  people first in line for the responsibilty.  These  are  the  Project 
  1271. Engineers,  or Program Officers, or some equivalent title.  I believe  I  know 
  1272. what  their opinion is concerning re-use, but it would be interesting to  hear 
  1273. them speak.
  1274.  
  1275. 3.  By  what  magic do you expect an organization as large  and  diverse  and, 
  1276. sometimes,  divergent, to adopt a methodology that begs  for  standardization, 
  1277. cooperation, flexibility and a non-parochial attitude, when you would do  well 
  1278. to find one, small, isolated group, anywhere, doing the same?
  1279.  
  1280. ----------------------------------------------------------------------------
  1281. Subject: Re:  Software Reuse
  1282. Date: Thu, 18 Jun 87 12:55:43 EDT
  1283. From: Bob Munck <munck@mitre-bedford.ARPA>
  1284.  
  1285. I don't know if I've ever seem a more straightforward explanation of the DoD's 
  1286. Software Crises than this:
  1287.  
  1288. > As a "Government" manager of major software developments, ... There
  1289. > is no way, short of pushing my nose in it, that I will believe a
  1290. > paper analysis showing me how much _I_ will save tomorrow if only I
  1291. > give you more today.
  1292.  
  1293. Remember  that the _I_ (underlining mine) is really "the poor slob  who'll  be 
  1294. maintaining  this system years after I get a job in Industry."  Remember  too, 
  1295. that  EVERYBODY'S project is too important (major) to take the risk  of  being 
  1296. the first to use any new technique.
  1297.  
  1298. Of  course, with FORTRAN, JOVIAL, CMS-2, and/or the Chinese Army  approach  to 
  1299. programming, there's no risk.  We KNOW that it will be late, over budget,  and 
  1300. buggy.  No surprises, no risks.
  1301.  
  1302.                       -- Bob Munck, MITRE
  1303.  
  1304. .pa
  1305. ----------------------------------------------------------------------------
  1306. Date: 18 Jun 87 08:46:36 GMT
  1307. From: mcvax!ukc!dcl-cs!craig@seismo.css.gov  (Craig Wylie)
  1308. Organization: Department of Computing at Lancaster University, UK.
  1309. Subject: Software Reuse  --  do we really know what it is ?
  1310.  
  1311. There have been a couple of articles recently on Software Reuse and its likely 
  1312. acceptance by Defence Contractors.  In considering Software Reuse in  general, 
  1313. not  just with reference to Ada and DoD, do we know what it is? The  scale  of 
  1314. software that Ada allows the programmer to reuse seems to be primarily that of 
  1315. the  package (in Modula-2  the Module). Is this sufficient? If we leave  aside 
  1316. for the time being the question of whether Ada is an object oriented  language 
  1317. and  accept that if it isn't then you can do a reasonably good job faking  it, 
  1318. reuse  in  Ada  seems  to be stuck at the level of  the  Abstract  data  type. 
  1319. Furthermore  the  lack  of any easy (or apparent) way to derive  WHAT  an  Ada 
  1320. program  is doing rather than HOW it is doing it, does put a large  amount  of 
  1321. the responsibility for recovering reusable components on the programmer.
  1322.  
  1323. In summary I would like to offer a few statements for discussion to see if  we 
  1324. can clarify reuse.
  1325.  
  1326. 1.    We don't really know what it is.
  1327.  
  1328. 2.    It probably isn't a thing at all, but rather a collection of things
  1329.     depending on the scale at which the reuse is to take place.
  1330.  
  1331. 3.    Languages such as Ada and Modula-2, and imperative languages in
  1332.     general are unsuitable for writing reusable software because of
  1333.     their concentration on the HOW rather than the WHAT.    
  1334.  
  1335. 4.    Reuse of Design isn't considered at all by any current applications
  1336.     language.
  1337.  
  1338. 5.    Nobody can force programmers to write good reusable code.
  1339.  
  1340. 6.    Even if they do write reusable code how the **** do we ever find it
  1341.     again so that we can reuse it ?
  1342.  
  1343.  
  1344. All responses appreciated.
  1345.  
  1346. Craig.
  1347. UUCP:     ...!seismo!mcvax!ukc!dcl-cs!craig| Post: University of Lancaster,
  1348. DARPA:     craig%lancs.comp@ucl-cs          |      Department of Computing,
  1349. JANET:     craig@uk.ac.lancs.comp           |      Bailrigg, Lancaster, UK.
  1350. Phone:     +44 524 65201 Ext. 4476         |      LA1 4YR
  1351.  
  1352. ---------------------------------------------------------------------------
  1353. Date: Sat 20 Jun 87 12:27:45-PST
  1354. From: CONTR47@NOSC-TECR.ARPA
  1355. Subject: reuse - suggestion to include usage history in metrics
  1356.  
  1357.      You  don't write reusable code, you write useable code, use it,  then  it 
  1358. becomes  reusable. The reason I make such a statement is to set the stage  for 
  1359. making  the  suggestion that reuseable code's useage history is  an  important 
  1360. attribute  and one which I would like to see the reuseabilty  research  people 
  1361. include in their reusability metrics.
  1362.      For  examples just think of selecting a spreadsheet, etc., to reuse  (buy 
  1363. at the software store).
  1364.      I  suspect  that  most  software being touted as  reuseable  today  (  at 
  1365. Simtel20 repository for instance) is not reuseable because it hasn't been used 
  1366. for the first time.
  1367.  
  1368. regards, sam harbaugh
  1369.  
  1370. ---------------------------------------------------------------------------
  1371. Date: 22 Jun 1987 04:00:27 PDT
  1372. Subject: Software Reuse -- We Know More Than You Think
  1373. From: Edward V. Berard <EBERARD@ADA20.ISI.EDU>
  1374.  
  1375. This is response to an honest question by Craig Wylie. Wylie asks a series  of 
  1376. general questions about software reuse. He has also inadvertently tripped over 
  1377. one  of my pet peeves. Let me quietly explain, and then I will get on with  my 
  1378. answer to his questions.
  1379.  
  1380. ******************** Personal tirade -- Can be ignored ************
  1381.  
  1382. We  often ignore the technical nature of software engineering. By that I  mean 
  1383. that we assume there is little to software engineering other than writing code 
  1384. and opinion. Concepts which are accepted as normal practice in other technical 
  1385. disciplines  (e.g., literature searches, the application of  mathematical  and 
  1386. engineering disciplines, and quantitative metrics) are not yet accepted by the 
  1387. masses as being relevant for software engineering.
  1388.  
  1389. Take the issue of software reuse. Ignoring any work in this area prior to Doug 
  1390. McIlroy's  article  at  the  1968 NATO  Conference  on  Software  Engineering, 
  1391. software  reusability  has  a history of almost two decades  of  research  and 
  1392. implementation.  This  research and implementation knows  no  geographical  or 
  1393. political bounds. For example, the Japanese have an organization called  SIGMA 
  1394. to deal with software reuse.
  1395.  
  1396. The  IEEE  has recently published and entire tutorial on  software  reuse.   A 
  1397. number  of  recent issues of IEEE Software have carried articles  on  software 
  1398. reuse. Two entire issues of the IEEE Transactions on Software Engineering were 
  1399. devoted  to  software  reusability.  Even a  feeble  search  of  the  software 
  1400. engineering  literature would turn up hundreds of articles on the topic.  (The 
  1401. quality  of  these articles ranges from dismal to excellent.)  Many  of  these 
  1402. articles offer definitions, metrics, taxonomies, and reusability systems.
  1403.  
  1404. Some of the items which we now know about software reusability are:
  1405.  
  1406.      -   Much  more than source code can be reused. In fact,  designs,  plans, 
  1407. test data, and documentation (among others) can be reused. The smallest  gains 
  1408. in productivity, reliability, etc., are obtained by only reusing source  code. 
  1409. Reusing  the  documentation  associated with "reusable  source  code"  greatly 
  1410. enhances any gains associated with merely reusing the source code. 
  1411.  
  1412.      -   Reusability is not a concept that is limited to the coding  phase  of 
  1413. the  software life-cycle. It must be a highly visible item  from  requirements 
  1414. analysis to the retirement of the product.
  1415.  
  1416.      -   Research  seems  to indicate, and practice seems to  show,  that  the 
  1417. majority of many software products can be assembled from reusable components.
  1418.  
  1419.      -  There are any number of metrics associated with software reuse.   They 
  1420. include metrics which measure the sheer bulk of source code and  documentation 
  1421. reused  in  an application, to metrics which measure the affects  of  software 
  1422. reusability, e.g., software productivity metrics.
  1423.  
  1424. My  image of the current state-of-the-practice in software engineering is  one 
  1425. of  a  series of blind and deaf individuals surrounded by massive  amounts  of 
  1426. software engineering technology. All too often when some of this technology is 
  1427. brought  to  the attention of one of these "handicapped"  individuals,  it  is 
  1428. dismissed as "buzzwords," "academic," "theoretical," or "mere opinion."
  1429.  
  1430. *********************** End of tirade *******************************
  1431.  
  1432. Wylie  asks if we know what software reuse is. There are two answers  to  this 
  1433. question.  The vast majority of today's software practitioners either  do  not 
  1434. know what it is, or assume that it is "yet another buzzword." There is a small 
  1435. minority of individuals and organizations who are researching and implementing 
  1436. various  aspects of software reuse. [I am reminded of the anecdote  about  the 
  1437. monks  in their abbies who preserved the knowledge of mankind during the  dark 
  1438. ages while "the winds of ignorance howled outside."]
  1439.  
  1440. No, Ada's package concept is not enough. Grady Booch has been pointing out for 
  1441. years  that  some  higher  level  concept  (e.g.,  Rational's  subsystems)  is 
  1442. necessary. By the way, virtually all existing programming languages (with  the 
  1443. exception of some very high-level fourth-generation languages) lack attributes 
  1444. which make them directly applicable to programming-in-the-large.
  1445.  
  1446. Reuse in Ada is not "stuck at the level of the abstract data type."   However, 
  1447. few software engineers know how to go beyond this concept (in any language).
  1448.  
  1449. There are a number of ways to derive the "what" from a piece of Ada  software, 
  1450. and  to divorce this from the "how." The mechanisms for doing this range  from 
  1451. crude  (e.g.,  include  the  "what" in the  comments),  to  innovative  (e.g., 
  1452. consider  David Luckham's ANNA). Further, the recovery of reusable  components 
  1453. can be handled in a number of ways:
  1454.  
  1455.    -  level 0: the use of a hierarchical file system
  1456.  
  1457.    -  level 1: the use of a relational DBMS (data base management
  1458.       system) or a hypertext system
  1459.  
  1460.    -  level 2: the use of an expert system or some other artificial
  1461.       intelligence tool
  1462.  
  1463.    -  level 3: incorporation of reusable components in an application
  1464.       generator (a type of fourth-generation language)
  1465.  
  1466. These   approaches  have  also  been  modified  to  include  such  things   as 
  1467. documentation, test data, designs, and plans as well as source code.
  1468.  
  1469. Software  reusability  technology  is indeed a collection  of  things.   These 
  1470. things   include   reusable  components,  taxonomies,   reusability   systems, 
  1471. composition  concepts,  methodologies,  and others. This  technology  is  more 
  1472. coupled  with the size of the software product than it is with "the  scale  at 
  1473. which the reuse is to take place."
  1474.  
  1475. The  issue of language suitability for reuse is an interesting  one.   Stating 
  1476. that   imperative  languages  are  unsuitable  for  reuse  shows  a  lack   of 
  1477. understanding of software reuse technology. (But then again, I have heard  any 
  1478. number  of Ada people make similar misstatements about languages such as  LISP 
  1479. and most fourth-generation languages.) One might re-phrase the observation  by 
  1480. stating  that the mere use of the Ada language does not guarantee  reuse.  The 
  1481. language  must  be accompanied by software reuse technology (e.g.,  tools  and 
  1482. methodologies). 
  1483.  
  1484. One  item  which seems to have escaped the understanding of many  in  the  Ada 
  1485. community  is that one of the primary motivations behind the Ada  language  is 
  1486. "to  build tools to build tools." Ada was designed with the intention that  it 
  1487. be used as a bootstrap. Specifically, it is to be used to create libraries  of 
  1488. reusable components (the first "tools").  These reusable components are to  be 
  1489. used  to  create  fourth-generation languages and  "software  factories"  (the 
  1490. second  "tools").  Using the Ada language as if it were  Pascal,  C,  FORTRAN, 
  1491. COBOL, or assembly language is tantamount to abuse.
  1492.  
  1493. Software  design  methodologies do play an important part in  software  reuse. 
  1494. Some methodologies enhance software reuse, others discourage it. We have known 
  1495. for  some  time that software designs should be constructed so that  they  can 
  1496. easily  be modified. We are only now beginning to understand that by  bringing 
  1497. software reusability issues to the first phases of the software life-cycle, we 
  1498. can  greatly enhance the impact of software reusability. Finally, by  studying 
  1499. the  designs  of many systems within a particular application  domain  we  are 
  1500. finding  designs  are very much reusable, e.g., consider the  basis  for  many 
  1501. fourth-generation languages.
  1502.  
  1503. Nobody   can  force  programmers  to  write  good  reusable   code.   However, 
  1504. programmers,  as  a whole, want to do a good job and are  very  goal-oriented. 
  1505. Getting  programmers to write good reusable code is in part a  motivating  and 
  1506. educational process. 
  1507.  
  1508. Finally,  in  addition to the technical problems which must be  addressed,  we 
  1509. have  to consider many other connected issues. Political,  managerial,  legal, 
  1510. cultural,  financial,  marketing,  and  productization  issues  must  also  be 
  1511. considered.
  1512.  
  1513.                 -- Ed Berard
  1514.                    (301) 695-6960
  1515.  
  1516. ---------------------------------------------------------------------------
  1517. Date: 22 Jun 87 18:59:41 GMT
  1518. From: crowl@cs.rochester.edu  (Lawrence Crowl)
  1519. Organization: U of Rochester, CS Dept, Rochester, NY
  1520. Subject: Re: Software Reuse  --  do we really know what it is ?
  1521.  
  1522. In article <4658@utah-cs.UUCP> shebs@utah-cs.UUCP (Stanley Shebs) writes:
  1523.  
  1524. ]... software people fume and gnash their teeth over "wasted space". ...  All
  1525. ]the techniques for modules, objects, etc, tend to slow things down.  Again,
  1526. ]software types tear their hair out and vow to recode everything into one
  1527. ]assembly language procedure.  Worse, other software types admire them for
  1528. ]doing so!  ...
  1529. ]
  1530. ]In article <374@sol.ARPA> crowl@rochester.UUCP (Lawrence Crowl) writes:
  1531.  
  1532. >>In article <371@dcl-csvax.comp.lancs.ac.uk>
  1533. >>craig@comp.lancs.ac.uk (Craig Wylie) writes:
  1534. )))3.    Languages such as Ada and Modula-2, and imperative languages in
  1535. )))    general are unsuitable for writing reusable software because of
  1536. )))    their concentration on the HOW rather than the WHAT.
  1537. >>
  1538. >>Clearly, we need more concentration on WHAT, but we should not abandon the
  1539. ]                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^
  1540. >>efficiency of HOW.
  1541. ] ^^^^^^^^^^
  1542. ]
  1543. ]QED!
  1544.  
  1545. Let  me clarify my position.  I can specify a sort as a set of predicates  and 
  1546. let  the system figure out how to satisfy those predicates.  This is the  WHAT 
  1547. approach  used  in languages such as Prolog.  Another approach is to  write  a 
  1548. algorithm  for  sorting,  e.g. quicksort.  This is the HOW  approach  used  in 
  1549. languages  such  as Ada.  Yes, the packaging of the sort will result  in  some 
  1550. loss  of efficiency.  However, it will be substantially faster than  the  WHAT 
  1551. approach.  I am advocating an approach in which a package interface  describes 
  1552. WHAT and the implementation of the package describes HOW.
  1553.  
  1554. Because  I wish to keep the macro-efficiency of algorithmic languages, do  not 
  1555. accuse me of wishing to keep the micro-efficiency of hand-tuned assembler.
  1556.  
  1557. ]3. In general, hardware types have standards for every imaginable sort of
  1558. ]interface, and they stick to them remarkably well.  You can plug boards into
  1559. ]a standard bus with only a small chance of sparks flying everywhere as the
  1560. ]boards fry.  In software, standards are strictly for lip service to managers;
  1561. ]only a novice would consider combining programs from several different
  1562. ]sources without planning a few hours or days of debugging!
  1563.  
  1564. Programmers  to this sort of program combination many times a day in the  Unix 
  1565. shell.   There  ARE approaches to software reuse that CAN work.   We  need  to 
  1566. provide this kind of capability within a language.
  1567.  
  1568. ]In short, I believe there are no technical problems or issues with reuse;
  1569. ]it's the software culture that has to change.  At present, the prevailing
  1570. ]attitude is that the densely-coded, highly-optimized, do-everything program
  1571. ]is a sort of ideal to which everyone aspires.  Until this attitude changes,
  1572. ]software reusability will continue to be a bad joke among those who actually
  1573. ]write programs.
  1574.  
  1575. There  are  technical  problems.  For instance, how do  you  insure  that  the 
  1576. parameters to a generic package are appropriate.
  1577.  
  1578. Performance will always be a goal.  However, it must be balanced against cost.  
  1579. Most  programming  done  today  is in a high-level  language.   In  the  early 
  1580. sixties,  most programming was done in assembler.  So, the  software  attitude 
  1581. has changed.
  1582.  
  1583. Modular code also allows changes in representation that can lead to orders  of 
  1584. magnitude  performance improvements.  Non-modular code strongly inhibits  such 
  1585. representational changes.  In short, the micro-efficiency of non-modular  code 
  1586. leads to the macro-INefficiency of poor algorithms and representations.
  1587.  
  1588. )))5.    Nobody can force programmers to write good reusable code.
  1589. >>
  1590. >>True.  But no one need buy code that is not both good and reusable.  I
  1591. >>believe there is a market for such code.
  1592. ]
  1593. ]Manufacturers seem to think their interest is in maintaining secrecy of code.
  1594.  
  1595. Again, let me clarify.  I meant that the reusable software would be written by 
  1596. software houses and sold to companies which write applications.  For instance, 
  1597. Reusable  Software Inc. sells a sort package to Farm Software Inc. which  uses 
  1598. it in its combine scheduling program.  Farm Software Inc. need not divulge its 
  1599. algorithms or its use of packages written by Reusable Software Inc.
  1600.  
  1601. ]Customers only care about speed and features.  Read Infoworld and see if they
  1602. ]ever say anything positive about a program that is slower but more modular.
  1603.  
  1604. You forgot cost.  Modular code will cost substantially less in the long run.
  1605.  
  1606.   Lawrence Crowl        716-275-5766    University of Rochester
  1607.             crowl@rochester.arpa    Computer Science Department
  1608.  ...!{allegra,decvax,seismo}!rochester!crowl    Rochester, New York,  14627
  1609.  
  1610. ----------------------------------------------------------------------------
  1611. Date: 22 Jun 87 15:40:19 GMT
  1612. From: shebs@cs.utah.edu  (Stanley Shebs)
  1613. Organization: PASS Research Group
  1614. Subject: Re: Software Reuse  --  do we really know what it is ?
  1615.  
  1616. In article <374@sol.ARPA> crowl@rochester.UUCP (Lawrence Crowl) writes:
  1617.  
  1618. >In article <371@dcl-csvax.comp.lancs.ac.uk>
  1619. >craig@comp.lancs.ac.uk (Craig Wylie) writes:
  1620. >>1.    We don't really know what it is.
  1621. >
  1622. >Well, I find a glimering of re-use in reading Knuth's books.  I will point at
  1623. >an analogy though.  Board level designers constantly use circuits designed by
  1624. >others.  They are packaged in integrated circuits.
  1625.  
  1626. An interesting analogy.  It says a lot about prevailing software culture:
  1627.  
  1628. 1.  Available chips do not always meet requirements exactly.  For instance,  a 
  1629. board might need 3 NAND gates, but the 7400 has 4.  EEs just ignore the  extra 
  1630. gate,  or tie its pins to something stable.  In a similar situation,  software 
  1631. people fume and gnash their teeth over "wasted space".
  1632.  
  1633. 2.  Running wires around boards loses some performance, relative  to  cramming 
  1634. everything onto a single chip.  All the techniques for modules, objects,  etc, 
  1635. tend  to slow things down.  Again, software types tear their hair out and  vow 
  1636. to  recode  everything  into one assembly language  procedure.   Worse,  other 
  1637. software  types admire them for doing so!  Come to think of it, the advent  of 
  1638. VLSI  tools  promotes  the same idea for hardware, and we're  seeing  lots  of 
  1639. specialized chips these days...
  1640.  
  1641. >>3.    Languages such as Ada and Modula-2, and imperative languages in
  1642. >>    general are unsuitable for writing reusable software because of
  1643. >>    their concentration on the HOW rather than the WHAT.
  1644. >
  1645. >Clearly, we need more concentration on WHAT, but we should not abandon the
  1646.                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^
  1647. >efficiency of HOW.
  1648.  ^^^^^^^^^^
  1649.  
  1650. QED!
  1651.  
  1652. 3.  In  general, hardware types have standards for every  imaginable  sort  of 
  1653. interface, and they stick to them remarkably well.  You can plug boards into a 
  1654. standard  bus  with  only a small chance of sparks flying  everywhere  as  the 
  1655. boards fry.  In software, standards are strictly for lip service to  managers; 
  1656. only a novice would consider combining programs from several different sources 
  1657. without planning a few hours or days of debugging!
  1658.  
  1659. In short, I believe there are no technical problems or issues with reuse; it's 
  1660. the software culture that has to change.  At present, the prevailing  attitude 
  1661. is  that the densely-coded, highly-optimized, do-everything program is a  sort 
  1662. of  ideal  to which everyone aspires.  Until this attitude  changes,  software 
  1663. reusability  will  continue to be a bad joke among those  who  actually  write 
  1664. programs.
  1665.  
  1666. >>5.    Nobody can force programmers to write good reusable code.
  1667. >
  1668. >True.  But no one need buy code that is not both good and reusable.  I believe
  1669. >there is a market for such code.
  1670.  
  1671. Manufacturers seem to think their interest is in maintaining secrecy of  code. 
  1672. Customers only care about speed and features.  Read Infoworld and see if  they 
  1673. ever say anything positive about a program that is slower but more modular.
  1674.  
  1675. >  Lawrence Crowl        716-275-5766    University of Rochester
  1676.  
  1677.                             stan shebs
  1678.                             shebs@cs.utah.edu
  1679.  
  1680. .pa
  1681. ----------------------------------------------------------------------------
  1682. Date: 23 Jun 87 17:28:26 GMT
  1683. From: shebs@cs.utah.edu  (Stanley Shebs)
  1684. Organization: PASS Research Group
  1685. Subject: Re: Software Reuse  --  do we really know what it is ?
  1686.  
  1687. In article <378@sol.ARPA> crowl@rochester.UUCP (Lawrence Crowl) writes:
  1688.  
  1689. >>>Clearly, we need more concentration on WHAT, but we should not abandon the
  1690. >]                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^
  1691. >>>efficiency of HOW.
  1692. >] ^^^^^^^^^^
  1693. >]
  1694. >]QED!
  1695. >
  1696. >Let me clarify my position.  I can specify a sort as a set of predicates and
  1697. >let the system figure out how to satisfy those predicates.  This is the WHAT
  1698. >approach used in languages such as Prolog.  Another approach is to write a
  1699. >algorithm for sorting, e.g. quicksort.  This is the HOW approach used in
  1700. >languages such as Ada.  Yes, the packaging of the sort will result in some
  1701. >loss of efficiency.  However, it will be substantially faster than the WHAT
  1702. >approach.  I am advocating an approach in which a package interface describes
  1703. >WHAT and the implementation of the package describes HOW.
  1704. >
  1705. >Because I wish to keep the macro-efficiency of algorithmic languages, do not
  1706. >accuse me of wishing to keep the micro-efficiency of hand-tuned assembler.
  1707.  
  1708. I  wasn't accusing anybody of anything, just pointing out that like any  other 
  1709. culture,  the software culture is very pervasive and people in it  (us)  don't 
  1710. always  recognize when we're behaving according to those cultural norms.   For 
  1711. instance, if I were to post some inefficient sort to the net, there are  maybe 
  1712. ten  computer people in the world who could look at it and not get at least  a 
  1713. twinge of "Gee, why not use a better algorithm?"  As I said, it's part of  the 
  1714. culture.  Not completely bad, but frequently dominates our thinking.
  1715.  
  1716. Your  typical  serious  C  hacker will get unhappy about  the  overhead  of  a 
  1717. function  call, let alone the extra functions involved in  "packaging"!  After 
  1718. several  years of extensive Lisp hacking, I've managed to overcome  resistance 
  1719. to  defining lots of little data abstraction functions, and only  feel  guilty 
  1720. once in a while :-).  An additional obstacle to using the "packaging" is  that 
  1721. in  the  past,  some systems (such as Simula and  Smalltalk)  were  orders-of-
  1722. magnitude  slower than procedural languages, and there is perhaps a  lingering 
  1723. perception that data abstraction costs a lot in performance.
  1724.  
  1725. Requiring  both  WHAT  and HOW is a pretty controversial  thing  to  do.   The 
  1726. biggest  problem to me is the potential for inconsistency, since  many  things 
  1727. will be stated twice, but in different terms.  That's the rationale for making 
  1728. the  computer  figure out the HOW itself, but that is an elusive  and  perhaps 
  1729. unreachable goal.  (Doesn't stop me from trying though!)
  1730.  
  1731. >Programmers [do] this sort of program combination many times a day in the Unix
  1732. >shell.  There ARE approaches to software reuse that CAN work.  We need to
  1733. >provide this kind of capability within a language.
  1734.  
  1735. Unix  is a counterexample, that's why I didn't mention it :-).  A closer  look 
  1736. is worthwhile.  Unix tools offer basically one interface - a stream of  bytes.  
  1737. More  complicated interfaces, such as words, nroff commands, or  source  code, 
  1738. are less well supported; it's unusual to be able to pass C source through many 
  1739. filters  in  the  way that data files can be passed.  Also, at  least  in  the 
  1740. groups of Unix users I've observed, pipes and filtering sequences longer  than 
  1741. about  3 stages are relatively uncommon, and are about as difficult  for  many 
  1742. people to compose as a C program.  Of course, my sample is not scientific, and 
  1743. I'm  sure there are lots of Unix hacks that will be glad to tell me all  about 
  1744. their 15-stage pipe processes!
  1745.  
  1746. What other *working* approaches are there?
  1747.  
  1748. >There are technical problems.  For instance, how do you insure that the 
  1749. >parameters to a generic package are appropriate.
  1750.  
  1751. Use  something higher-level than Ada?  This seems like an issue only for  some 
  1752. languages, not a major obstacle to reuse.
  1753.  
  1754. >Performance will always be a goal.  However, it must be balanced against cost.
  1755. >Most programming done today is in a high-level language.  In the early sixties,
  1756. >most programming was done in assembler.  So, the software attitude has changed.
  1757.  
  1758. This is how us language people justify our salaries.  On the other hand,  I've 
  1759. been wondering if the change was caused by other factors not directly  related 
  1760. to level of language, such as sites getting a wider variety of hardware  (thus 
  1761. making non-portable assembly language impractical).  C is very popular for new 
  1762. applications  nowadays,  but  many  consider C  to  be  a  "portable  assembly 
  1763. language".
  1764.  
  1765. >Modular code also allows changes in representation that can lead to orders of
  1766. >magnitude performance improvements.  Non-modular code strongly inhibits such
  1767. >representational changes.  In short, the micro-efficiency of non-modular code
  1768. >leads to the macro-INefficiency of poor algorithms and representations.
  1769.  
  1770. I agree 100% (especially since my thesis relates to this!)  BUT, flaming about 
  1771. the  wonders of data abstraction is not going to change anybody's  programming 
  1772. practices.  Demonstrations are much more convincing, although a DoD project to 
  1773. demonstrate  reusability is probably much less influential than Jon  Bentley's 
  1774. CACM column.  Many recent C books have been introducing substantial  libraries 
  1775. for reuse, although the books' stated policies on copying are not  consistent.  
  1776. More of this sort of thing would be great.
  1777.  
  1778. >Again, let me clarify.  I meant that the reusable software would be written by
  1779. >software houses and sold to companies which write applications.  For instance,
  1780. >Reusable Software Inc. sells a sort package to Farm Software Inc. which uses
  1781. >it in its combine scheduling program.  Farm Software Inc. need not divulge its
  1782. >algorithms or its use of packages written by Reusable Software Inc.
  1783.  
  1784. I  hadn't  thought  about that.  Here's my reaction as a  Farm  Software  Inc. 
  1785. programmer  -  "How  do I know if their stuff is good  enough!?  ...  But  the 
  1786. interface  isn't  right! ... How can we fix the bugs without  sources!"  Reuse 
  1787. can't  happen  until the seller *guarantees* critical characteristics  -  they 
  1788. have  to be able to say that their sort package will sort M data values  in  N 
  1789. seconds, and that the software will have bugs fixed within a certain number of 
  1790. days  of being discovered, and so forth.  This is old hat for other  kinds  of 
  1791. engineers,  but software companies these days will only promise that there  is 
  1792. data on the disk somewhere :-(.  (I'm sure there are places that will  certify 
  1793. performance - anybody got good examples?)
  1794.  
  1795. >[...] Modular code will cost substantially less in the long run.
  1796.  
  1797. I sort of believe that too, but it's hard to substantiate.  Anecdotes are easy 
  1798. to  come by, but this is a field where cost depends primarily  on  programming 
  1799. skill, and we don't have a precise measure of that skill.  The other cost  win 
  1800. is  when  a module can be used in some other program, but the  extra  cost  of 
  1801. making code reusable can only be justified if your company has another program 
  1802. to use it in!
  1803.  
  1804. BTW, at Boeing I proposed an engineer-maintained library of  aerospace-related 
  1805. subroutines, so people didn't have to continually reinvent spherical  geometry 
  1806. formulas, Zakatov equations, and the like.  But management rejected the  idea, 
  1807. because  it  would be "too difficult to coordinate" (it was  supposed  to  cut 
  1808. across individual projects).  No mention of costs...
  1809.  
  1810. People  interested  in  promoting software reuse should  look  at  how  expert 
  1811. systems  developed as a field.  Although the first ones appeared in  the  mid-
  1812. 70s, it wasn't until 1980 when the expert system R1 that configured Vaxen  for 
  1813. DEC was published.  DEC claimed to have saved millions of dollars in the first 
  1814. year   of  using  it.   From  then  on,  the  expert  system   business   grew 
  1815. exponentially, although it's not clear whether anybody else has ever  profited 
  1816. from an expert system so dramatically...
  1817.  
  1818. >  Lawrence Crowl        716-275-5766    University of Rochester
  1819.  
  1820.                             stan shebs
  1821.                             shebs@cs.utah.edu
  1822.  
  1823. ----------------------------------------------------------------------------
  1824. Date: 25 Jun 87 17:32:39 GMT
  1825. From: dday@mimsy.umd.edu  (Dennis Doubleday)
  1826. Organization: U of Maryland, Dept. of Computer Science, Coll. Pk., MD 20742
  1827. Subject: Software Reuse
  1828.  
  1829. In article <4658@utah-cs.UUCP> shebs@utah-cs.UUCP (Stanley Shebs) writes:
  1830.  
  1831. >An interesting analogy.  It says a lot about prevailing software culture:
  1832. >
  1833. >1. Available chips do not always meet requirements exactly.  For instance,
  1834. >a board might need 3 NAND gates, but the 7400 has 4.  EEs just ignore the
  1835. >extra gate, or tie its pins to something stable.  In a similar situation,
  1836. >software people fume and gnash their teeth over "wasted space".
  1837. >
  1838.  
  1839. I've seen this standardized circuits analogy to software packages a number  of 
  1840. times, and I don't really buy it.  Software people are attempting to deal with 
  1841. a  much  larger  and less well-defined problem domain  than  hardware  people.  
  1842. Otherwise,  we wouldn't even need software.  We could just design hardware  to 
  1843. handle every application.
  1844.  
  1845. >2. Running wires around boards loses some performance, relative to cramming
  1846. >everything onto a single chip.  All the techniques for modules, objects, etc,
  1847. >tend to slow things down.  Again, software types tear their hair out and
  1848. >vow to recode everything into one assembly language procedure.  
  1849.  
  1850. Performance is an important issue in many time-critical applications.  I don't 
  1851. know anybody who wants to code everything in assembler.  I do know people  who 
  1852. are  WILLING to code in assembler if it's the only way timing constraints  can 
  1853. be met.
  1854.  
  1855. >In short, I believe there are no technical problems or issues with reuse;
  1856. >it's the software culture that has to change.  At present, the prevailing
  1857. >attitude is that the densely-coded, highly-optimized, do-everything program
  1858. >is a sort of ideal to which everyone aspires.
  1859.  
  1860. I  don't  think  you're up to date on what's happening, at least  in  the  Ada 
  1861. community.   I just completed a 13.5K source line Ada program, of  which  7.5K 
  1862. source lines were contributed by reusable utility packages that I got from the 
  1863. Ada repository (abstract string, stack, list, counted ordered set, and  binary 
  1864. tree  data  types  as well as packages for  command  line  interface,  lexical 
  1865. analysis of Ada, and parsing).
  1866.  
  1867.  
  1868. UUCP:    seismo!mimsy!dday                        Dennis Doubleday
  1869. CSNet:    dday@mimsy                 University of Maryland
  1870. ARPA:    dday@brillig.umd.edu             College Park, MD 20742
  1871. Fan of: Chicago Cubs, Chicago Bears, OU Sooners     (301) 454-6154
  1872.  
  1873. ---------------------------------------------------------------------------
  1874. Date: 2 Jul 87 07:55:43 GMT
  1875. From: mcvax!prlb2!crcge1!adams@seismo.css.gov  (Drew Adams)
  1876. Organization: Laboratoires de Marcoussis (CGE) - France
  1877. Subject: Re: Software Reuse  --  do we really know what it is ?
  1878.  
  1879. Let me play provocateur and recommend a little known paper introducing another 
  1880. point of view regarding software reusability and modularity:
  1881.  
  1882. Hughes, John, "Why Functional Programming Matters", Report 16, Programming
  1883.         Methodology Group, University of Goteborg and Chalmers
  1884.         University of Technology, Goteborg, Sweden, 1984,
  1885.         ISSN 0282-2083
  1886.  
  1887. Here's the abstract:
  1888.  
  1889.      "As software becomes more and more complex, it is more and more important 
  1890. to  structure  it well.  Well-structured software is easy to  write,  easy  to 
  1891. debug,  and  provides a collection of modules that can be  re-used  to  reduce 
  1892. future  programming costs.  Conventional languages place conceptual limits  on 
  1893. the way problems can be modularised.  [Purely f]unctional languages push those 
  1894. limits back.  In this paper we show that two features of functional  languages 
  1895. in  particular,  higher-order functions and lazy  evaluation,  can  contribute 
  1896. greatly  to modularity.  As examples, we manipulate lists and  trees,  program 
  1897. several  numerical  algorithms,  and implement the  alpha-beta  heuristic  (an 
  1898. algorithm from Artificial Intelligence used in game-playing programs).   Since 
  1899. modularity  is  the key to successful programming, functional  programming  is 
  1900. vitally important to the real world."
  1901.  
  1902. Hughes  argues  that  the usual "advantages"  of  declarative  languages  over 
  1903. imperative  ones  (no  assignment, no side effects, no flow  of  control)  are 
  1904. negative  expressions of some of the problems with imperative  languages,  but 
  1905. that  they  leave  unexplained 1) why these problems are  problems  and,  more 
  1906. importantly,  2)  what  are  the  real  POSITIVE  advantages  of   declarative 
  1907. programming.  To quote from the introduction:
  1908.  
  1909.      If  omitting  assignment statements brought such enormous  benefits  then 
  1910. FORTRAN  programmers  would  have been doing it for twenty  years.   It  is  a 
  1911. logical  impossibility to make a language more powerful by omitting  features, 
  1912. no matter how bad they may be.
  1913.  
  1914.      Even a functional programmer should be dissatisfied with these  so-called 
  1915. advantages,  because  they  give  him  no help  in  exploiting  the  power  of 
  1916. functional  languages.   One  cannot write a  program  which  is  particularly 
  1917. lacking  in assignment statements, or particularly referentially  transparent.  
  1918. There  is no yardstick of program quality here, and therefore no ideal to  aim 
  1919. at.
  1920.  
  1921.      Clearly  this characterisation of functional programming  is  inadequate.  
  1922. We must find something to put in its place - something which not only explains 
  1923. the power of functional programming, but also gives a clear indication of what 
  1924. the functional programmer should strive towards.
  1925.  
  1926. Hughes  finds that the importance of functional languages is that  they  allow 
  1927. program  modularisation in ways which imperative languages cannot.   To  quote 
  1928. again:
  1929.  
  1930.      "...  recent  languages  such as Modula-II [Wirth 82] and  Ada  [DOD  80] 
  1931. include  features specifically designed to help improve modularity.   However, 
  1932. there is a very important point that is often missed.  When writing a  modular 
  1933. program  to solve a problem, one first divides the program into  sub-problems, 
  1934. then  solves the sub-problems and combines the solutions.  The ways  in  which 
  1935. one  can divide up the original problem depend directly on the ways  in  which 
  1936. one  can  glue solutions together.  Therefore, to increase  one's  ability  to 
  1937. modularise  a problem conceptually, one must provide new kinds of glue in  the 
  1938. programming language.  
  1939.  
  1940.      "...  functional languages provide two new, very important kinds of  glue 
  1941. [(higher  order  functions and lazy interpretation)].... This is  the  key  to 
  1942. functional  programming's power - it allows greatly  improved  modularisation.  
  1943. It is also the goal for which functional programmers must strive - smaller and 
  1944. simpler and more general modules, glued together with the new glues...."
  1945.  
  1946. If  you only read one article about (purely) declarative languages, let it  be 
  1947. this one.  You won't be disappointed.-- 
  1948.  
  1949. Drew ADAMS, Laboratoires de Marcoussis, Centre de Recherche de la Compagnie 
  1950.             Generale d'Electricite, Route de Nozay, 91460 MARCOUSSIS, FRANCE
  1951.             Tel. 64.49.11.54, adams@crcge1.cge.fr
  1952.  
  1953. .pa
  1954. ----------------------------------------------------------------------------
  1955. Date: 1 Jul 87 08:30:40 GMT
  1956. From: mcvax!ukc!dcl-cs!craig@seismo.css.gov  (Craig Wylie)
  1957. Organization: Department of Computing at Lancaster University, UK.
  1958. Subject: Software reuse  --  how do we reuse
  1959.  
  1960. The recent discussion on software reuse has highlighted several points that  I 
  1961. would  like  to take further. The question of what it is has been  quite  well 
  1962. covered  - basically it is what ever you want it to be regarding the reuse  of 
  1963. any part of the the software design process.
  1964.  
  1965. I would like now to concentrate on one small area of reuse, reuse of  Software 
  1966. Components,  and more particularly the recovery of a component from some  form 
  1967. of catalogue. Many of the replies, both to me personally, and to the net  have 
  1968. cited  'Libraries',  'Browsers',  and  'Intelligent  Systems'  as  methods  of 
  1969. retrieving software.  I think that the analogy to lending libraries and online 
  1970. bibliographic  retrieval  is  not  a  poor  one  but  that  it  does   require 
  1971. considerably more thought.
  1972.  
  1973. Consider   an  example,   in  my  research  into  distribution  and   software 
  1974. engineering  I  can go to a terminal, call up a bibliographic data  base,  and 
  1975. search  on  terms  such as 'Reuse',  'Software  Engineering',  'Distribution', 
  1976. 'Concurrency'  etc.. The fact that these terms are very high level  makes  the 
  1977. retrieval  process much easier, authors may well have included these terms  in 
  1978. their  keywords  or  abstracts. The provision of a  synonyms  dictionary  will 
  1979. enhance the system.
  1980.  
  1981. How can we provide similar power for components ? Obviously the keywords of  a 
  1982. text  can  be  mimiced by the provision of keywords from the  authors  of  the 
  1983. software component (or the authors of the design work or any other object that 
  1984. might  be  reused),  however there is no point in retrieving  on  whether  the 
  1985. program  contains a FOR loop. The automatic generation of keywords might  also 
  1986. help,  if not definitive it might certainly act as an aid. Yet how can  we  do 
  1987. this from languages such as Ada, it is far from proven that it is possible.
  1988.  
  1989. One of the great powers of bibliographic retrieval is the fact that any  paper 
  1990. retrieved will have a list of references, so if the paper found isn't  exactly 
  1991. applicable  then perhaps one of the referenced papers will be. How might  this 
  1992. be mimiced?
  1993.  
  1994. If we are to continue to use the library analogy then we must derive a way for 
  1995. talking  about programs that is accessible to all. Remember even Math  is  not 
  1996. perfect  -  there can be more than one mathematical description  of  the  same 
  1997. piece of software.
  1998.  
  1999. Fuzzy  logic  and browsers have their place, but rather than  citing  them  as 
  2000. answers  we should be looking on them more as techniques once we know what  we 
  2001. are dealing with.
  2002.  
  2003. Sorry about the rather bitty nature of this article  --  it has been a flow of 
  2004. thought article, the views are entirely my own.
  2005.  
  2006. Craig
  2007. UUCP:     ...!seismo!mcvax!ukc!dcl-cs!craig| Post: University of Lancaster,
  2008. DARPA:     craig%lancs.comp@ucl-cs          |      Department of Computing,
  2009. JANET:     craig@uk.ac.lancs.comp           |      Bailrigg, Lancaster, UK.
  2010. Phone:     +44 524 65201 Ext. 4476         |      LA1 4YR
  2011.  
  2012.  
  2013.  
  2014.  
  2015. ============================================================================== 
  2016. Ada is a registered trademark, U.S. Government - Ada Joint Program Office. The 
  2017. following are trademarks of Digital Equipment Corporation:  DEC, DECSYSTEM-20, 
  2018. ULTRIX,  VAX,  VMS.   UNIX  is  a trademark of AT&T  Bell  Laboratories.   The 
  2019. following are trademarks of Data General Corporation:  AOS, ROLM.  Verdix is a 
  2020. trademark  of  Verdix Corporation.   TeleGen2 and TeleSoft are  trademarks  of 
  2021. TeleSoft.
  2022.  
  2023. The Ada Software Repository Newsletter is Copyright 1986, 1987 Echelon, Inc.  
  2024. All  Rights  Reserved.   Permission  to reprint,  wholly  or  partially,  is 
  2025. automatically granted if source credit is given to Echelon.
  2026.  
  2027.                                                                  Echelon, Inc.
  2028.                                                        885 N. San Antonio Road
  2029.                                                        Los Altos, CA 94022 USA
  2030.                                                        Telephone: 415/948-3820
  2031.  
  2032.